Satura rādītājs
Vēlaties apstrādāt baltās atstarpes visefektīvākajā veidā? Izmantojiet regulārās izteiksmes, lai novērstu visas atstarpes šūnā, aizvietotu vairākas atstarpes ar vienu rakstzīmi, apgrieztu atstarpes tikai starp cipariem u. c.
Lai arī kādus ievades datus izmantotu, diez vai sastapsieties ar datu kopu bez atstarpēm. Vairumā gadījumu baltās atstarpes ir labas - tās tiek izmantotas, lai vizuāli atdalītu dažādus informācijas elementus un atvieglotu to uztveršanu. Tomēr dažās situācijās tās var kļūt par ļaunumu - papildu atstarpes var sagraut formulas un padarīt darblapas gandrīz nepārskatāmas.
Kāpēc izmantot regulāru izteiksmi, lai Excel programmā apgrieztu baltās atstarpes?
Pirms mēs pievērsīsimies regulāro izteicienu izmantošanas niansēm, lai Excel darblapās noņemtu baltās atstarpes, es vēlētos atbildēt uz jautājumu, kas nāk prātā vispirms - kāpēc mums ir vajadzīgas regekses, ja Excel jau ir TRIM funkcija?
Lai saprastu atšķirību, aplūkosim, kas katrā gadījumā tiek uzskatīts par balto laukumu:
- Iebūvētā TRIM funkcija var noņemt tikai atstarpes raksturs ar vērtību 32 7 bitu ASCII sistēmā.
- Regulārās izteiksmes var identificēt dažas dažādas baltās atstarpes formas, piemēram, atstarpi ( ), tabulatoru (\t), atgriezenisko ratu (\r) un jaunu rindu (\n). baltās atstarpes raksturs (\s), kas atbilst visiem šiem tipiem un ir ļoti noderīgs neapstrādātu ievades datu attīrīšanai.
Zinot, kas tieši notiek aizkulisēs, ir daudz vieglāk rast risinājumu, vai ne?
Kā iespējot regulārās izteiksmes programmā Excel
Tas ir labi zināms fakts, ka Excel no komplektā esošās programmas neatbalsta regulārās izteiksmes. Lai tās iespējotu, ir jāizveido pielāgota VBA funkcija. Par laimi, mums jau ir viena funkcija ar nosaukumu RegExpReplace Pagaidiet, kāpēc "aizstāt", ja mēs runājam par noņemšanu? Excel valodā "noņemt" ir tikai cits vārds "aizstāt ar tukšu virkni" :)
Lai pievienotu šo funkciju programmai Excel, vienkārši nokopējiet tās kodu no šīs lapas, ielīmējiet to VBA redaktorā un saglabājiet failu kā. darbgrāmata ar iespējotu makru (.xlsm).
Šeit ir funkcijas sintakse, lai uz to varētu atsaukties:
RegExpReplace(teksts, modelis, aizvietošana, [instance_num], [match_case])Pirmie trīs argumenti ir obligāti, bet pēdējie divi nav obligāti.
Kur:
- Teksts - sākotnējā meklēšanas virkne.
- Modelis - meklējamais regekss.
- Nomaiņa - tekstu, kas jāaizstāj ar. noņemt baltie laukumi , iestatiet šo argumentu uz:
- tukša virkne (""), lai apgrieztu pilnīgi visas atstarpes
- telpa raksturs (" "), lai aizvietotu vairākas atstarpes ar vienu atstarpes rakstzīmi.
- Instance_num (nav obligāts) - gadījuma numurs. Vairumā gadījumu to izlaidīsiet, lai aizstātu visus gadījumus (noklusējuma iestatījums).
- Match_case (nav obligāts) - logaritma vērtība, kas norāda, vai teksta burtus saskaņot (TRUE) vai ignorēt (FALSE). Attiecībā uz baltajām atstarpēm tas ir nebūtisks, tāpēc netiek izmantots.
Plašāku informāciju skatiet sadaļā RegExpReplace funkcija.
Kā noņemt baltās atstarpes ar regex - piemēri
Kad darbgrāmatā ir pievienota funkcija RegExpReplace, risināsim dažādus scenārijus pa vienam.
Noņemt visas baltās atstarpes, izmantojot regex
Lai dzēstu visas atstarpes rindā, vienkārši meklējiet jebkuru balto rakstzīmi, tostarp atstarpi, tabulatoru, atgriezenisko rindstarpu un rindstarpu padevi, un aizstāt to ar tukšu virkni ("").
Modelis : \s+
Nomaiņa : ""
Pieņemot, ka avota virkne ir A5, formula B5 ir šāda:
=RegExpReplace(A5, "\s+", "")
Lai būtu vieglāk pārvaldīt šablonus, varat ievadīt regeksus iepriekš definētā šūnā un ievadīt tos formulā, izmantojot absolūtu atsauci, piemēram, $A$2, lai šūnas adrese paliktu nemainīga, kopējot formulu lejup pa kolonnu.
=RegExpReplace(A5, $A$2, "")
Noņemt vairāk nekā vienu balto atstarpi
Lai noņemtu papildu baltās atstarpes (t. i., vairāk nekā viena atstarpes zīme pēc kārtas), izmantojiet to pašu regekss \s+, bet aizstājiet atrastās atbilstības ar vienu atstarpes zīmi.
Modelis : \s+
Nomaiņa : " "
=RegExpReplace(A5, "\s+", " ")
Lūdzu, pievērsiet uzmanību, ka šī formula saglabā vienu atstarpes zīmi ne tikai starp vārdiem, bet arī virknes sākumā un beigās, kas nav labi. Lai atbrīvotos no priekšējās un aizmugurējās baltās atstarpes, ievietojiet iepriekšminēto formulu citā RegExpReplace funkcijā, kas noņem atstarpes sākumā un beigās:
=RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+
Regekss, lai noņemtu priekšējo un aizmugurējo balto atstarpi
Lai meklētu baltās zīmes rindas sākumā vai beigās, izmantojiet sākuma ^ un beigu $ enkurus.
Vadošais baltās atstarpes:
Modelis : ^[\s]+
Atpaliekošais baltās atstarpes:
Modelis : [\s]+$
Vadošais un sekojošais baltās atstarpes:
Modelis : ^[\s]+
Neatkarīgi no tā, kuru regeksi izvēlaties, aizstāt atbilstību ar neko.
Nomaiņa : ""
Piemēram, lai likvidētu visas atstarpes A5 rindas sākumā un beigās, formula ir šāda:
=RegExpReplace(A5, "^[\s]+
Kā redzams zemāk redzamajā ekrānšāviņas attēlā, tiek noņemts tikai sākuma un beigu baltais laukums. Telpas starp vārdiem paliek neskartas, radot vizuāli patīkamu skatu lasītāja acīm.
Noņemiet papildu baltās atstarpes, bet saglabājiet rindu pārrāvumus
Strādājot ar daudzrindu virknēm, iespējams, vēlēsieties atbrīvoties no papildu atstarpēm, bet saglabāt rindu pārrāvumus. Lai to izdarītu, baltās atstarpes rakstzīmes \s vietā meklējiet atstarpes [ ] vai atstarpes un tabulatorus [\t ]. Pēdējais modelis ir noderīgs, ja avota dati ir importēti no cita avota, piemēram, teksta redaktora.
Pieņemsim, ka turpmāk dotajā datu kopā vēlaties apgriezt visas sākuma/galīgās atstarpes un visas atstarpes, izņemot vienu starp tām, saglabājot vairākas neskartas rindas. Lai izpildītu šo uzdevumu, jums būs nepieciešamas divas dažādas RegExpReplace funkcijas.
Pirmā funkcija aizstāj vairākas atstarpes ar vienu atstarpes rakstzīmi.
=RegExpReplace(A5, " +", " ")
Otrais noņem atstarpes no rindas sākuma un beigām:
=RegExpReplace(A5, "^ + +
Vienkārši ievietojiet abas funkcijas vienu otrā:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +
Un jūs iegūsiet perfektu rezultātu:
Regex, lai aizstātu vairākas atstarpes ar vienu rakstzīmi
Ja vēlaties no virknes noņemt visas atstarpes un aizstāt katru secīgu atstarpju grupu ar konkrētu rakstzīmi, ir jādara tas, kas jādara:
Vispirms izmantojiet šo regekssarakstu, lai apgrieztu priekšējās un aizmugurējās baltās atstarpes:
=RegExpReplace(A8, "^[\s]+
Pēc tam izpildiet iepriekš minēto funkciju, lai teksts arguments no cita RegExpReplace, kas aizstāj vienu vai vairākus secīgus baltos punktus ar norādīto rakstzīmi, piemēram, defisi:
Modelis : \s+
Nomaiņa : -
Pieņemot, ka avota virkne ir A8, formula ir šāda:
=RegExpReplace(RegExpReplace(A8, "^[\s]+
Vai arī varat ievadīt modeļus un aizvietotāju atsevišķās šūnās, kā parādīts ekrānšāviņā:
Regekss, lai noņemtu tukšās rindas
Šis ir jautājums, ko bieži uzdod lietotāji, kuriem vienā šūnā ir vairākas rindas: "Manās šūnās ir daudz tukšu rindu. Vai ir kāds cits veids, kā no tām atbrīvoties, kā vien manuāli iziet cauri katrai šūnai un dzēst katru rindu?" Atbilde: Tas ir vienkārši!
Lai saskaņotu tukšas rindas, kurās nav nevienas rakstzīmes no pašreizējās rindas sākuma ^ līdz nākamajai rindai \n, regekss ir:
Modelis : ^\n
Ja vizuāli tukšajās rindās ir atstarpes vai tabulatori, izmantojiet šo regulāro izteiksmi:
Modelis : ^[\t ]*\n
Vienkārši nomainiet regekss ar tukšu virkni, izmantojot šo formulu, un visas tukšās rindas uzreiz pazudīs!
=RegExpReplace(A5, $A$2, "")
Balto atstarpju noņemšana ar RegEx rīkiem
Iepriekš minētajos piemēros ir parādīta tikai neliela daļa no brīnišķīgajām iespējām, ko sniedz regekses. Diemžēl VBA nav pieejamas visas klasisko regulāro izteiksmju funkcijas.
Par laimi, mūsu komplektā Ultimate Suite iekļautajiem RegEx rīkiem nav šo ierobežojumu, jo tos apstrādā Microsoft .NET RegEx dzinējs. Tas ļauj jums izveidot sarežģītākus modeļus, kurus neatbalsta VBA RegExp. Tālāk ir redzams šādas regulārās izteiksmes piemērs.
Regex, lai noņemtu atstarpi starp skaitļiem
Pieņemsim, ka burtu un ciparu virknē vēlaties noņemt baltās atstarpes tikai starp cipariem, tāpēc virkne, piemēram, "A 1 2 B", kļūst par "A 12 B".
Lai starp jebkuriem diviem cipariem ierakstītu balto zīmi, varat izmantot šādus apvedceļus:
Modelis : (?<=\d)\s+(?=\d)
Lai izveidotu formulu, pamatojoties uz iepriekš minētajām regeksēm, veiciet divus vienkāršus soļus:
- Par Ablebits dati cilnē Teksts grupu, noklikšķiniet uz Regekses rīki .
- Par Regekses rīki panelī, atlasiet avota datus, ievadiet regeksus, izvēlieties Noņemt un nospiediet Noņemt .
Lai iegūtu rezultātus kā formulas, nevis kā vērtības, neaizmirstiet ievilkt ķeksīti laukā Ievietot kā formulu izvēles rūtiņu.
Pēc brīža redzēsiet AblebitsRegexRemove funkcija ievietota jaunā slejā pa labi no sākotnējiem datiem.
Varat arī ievadīt regeksus kādā šūnā, piemēram, A5, un ievietot formulu tieši šūnā, izmantojot funkciju Ievietot funkciju dialoglodziņu, kurā AblebitsRegexRemove ir iekļauts kategorijā AblebitsUDFs .
Tā kā šī funkcija ir īpaši izstrādāta virkņu noņemšanai, tai ir nepieciešami tikai divi argumenti - ievades virkne un regekss:
=AblebitsRegexRemove(A5, $A$2)
Lūk, kā noņemt atstarpes programmā Excel, izmantojot regulārās izteiksmes. Paldies, ka izlasījāt, un ar nepacietību gaidīsim jūs mūsu blogā nākamnedēļ!
Pieejamās lejupielādes
Balto atstarpju noņemšana ar regex - piemēri (.xlsm fails)
Ultimate Suite - izmēģinājuma versija (.exe fails)