Tabl cynnwys
Awydd trin bylchau gwyn yn y ffordd fwyaf effeithiol? Defnyddiwch fynegiadau rheolaidd i ddileu pob gofod mewn cell, disodli bylchau lluosog gydag un nod, tocio bylchau rhwng rhifau yn unig, a mwy.
Pa bynnag fewnbwn data rydych yn ei ddefnyddio, prin y byddwch yn dod ar draws a set ddata heb fylchau. Yn y rhan fwyaf o achosion, mae gofod gwyn yn dda - rydych chi'n ei ddefnyddio i wahanu gwahanol ddarnau o wybodaeth yn weledol i'w gwneud yn haws i'w gweld. Mewn rhai sefyllfaoedd, fodd bynnag, gall fynd yn ddrwg - gall bylchau ychwanegol wneud llanast o'ch fformiwlâu a gwneud eich taflenni gwaith bron yn anhydrin.
Cyn i ni blymio i'r nitty-gritty o ddefnyddio mynegiadau rheolaidd i gael gwared ar fylchau gwyn yn nhaflenni gwaith Excel, hoffwn fynd i'r afael â'r cwestiwn sy'n dod i'r meddwl yn y lle cyntaf - pam mae angen regexes arnom pan fydd gan Excel y TRIM eisoes ffwythiant?
I ddeall y gwahaniaeth, gadewch i ni weld beth sy'n cael ei ystyried yn ofod gwyn ym mhob achos:
- Dim ond y nod gofod y gall y ffwythiant TRIM adeiledig ei dynnu sydd â gwerth 32 yn y system ASCII 7-did.
- Gall mynegiadau rheolaidd nodi ychydig o wahanol fathau o ofod gwyn megis gofod ( ), tab ( \ t ), dychweliad cerbyd ( \ r ), a newydd llinell (\n). Yn ogystal, mae'r nod gofod gwyn (\ s) sy'n cyfateb i'r holl fathau hyn ac sy'n ddefnyddiol iawn ar gyfer glanhau mewnbwn amrwddata.
Gan wybod yn union beth sy'n digwydd tu ôl i'r llenni, mae'n llawer haws gweithio allan datrysiad, iawn?
Sut i alluogi mynegiadau rheolaidd yn Excel
Mae'n ffaith adnabyddus nad yw Excel y tu allan i'r bocs yn cefnogi ymadroddion rheolaidd. Er mwyn eu galluogi, mae angen i chi greu swyddogaeth VBA arferol. Yn ffodus, mae gennym un eisoes, o'r enw RegExpReplace . Arhoswch, pam "disodli" tra ein bod yn sôn am gael gwared? Yn yr iaith Excel, dim ond gair arall yw "dileu" ar gyfer "disodli â llinyn gwag" :)
I ychwanegu'r swyddogaeth i'ch Excel, copïwch ei god o'r dudalen hon, gludwch ef yn y golygydd VBA , a chadwch eich ffeil fel llyfr gwaith macro-alluogi (.xlsm).
Dyma gystrawen y ffwythiant ar gyfer eich cyfeirnod:
RegExpReplace(testun, patrwm, amnewid, [instance_num] , [match_case])Mae angen y tair arg gyntaf, mae'r ddwy olaf yn ddewisol.
Lle:
- Testun - y llinyn gwreiddiol i chwilio i mewn.
- Patrwm - y regex i chwilio amdano.
- Amnewid - y testun i'w ddisodli. I tynnu bylchau gwyn , byddech yn gosod y ddadl hon i naill ai:
- llinyn gwag ("") i docio pob bwlch yn llwyr<11
- gofod cymeriad (" ") i ddisodli bylchau lluosog gyda nod gofod sengl
Am ragor o wybodaeth, gweler swyddogaeth RegExpReplace.
Sut i dynnu gofod gwyn gyda regex - enghreifftiau
Gyda'r Swyddogaeth RegExpReplace wedi'i hychwanegu at eich llyfr gwaith, gadewch i ni fynd i'r afael â gwahanol senarios un ar y tro.
Tynnwch yr holl ofodau gwyn gan ddefnyddio regex
I dynnu pob bwlch mewn llinyn, rydych yn chwilio am unrhyw nod gofod gwyn, gan gynnwys bwlch, tab, dychweliad cerbyd, a phorthiant llinell, a rhoi llinyn gwag yn eu lle ("").
Patrwm : \s+
Amnewid :" ""
A chymryd bod y llinyn ffynhonnell yn A5, y fformiwla yn B5 yw:
=RegExpReplace(A5, "\s+", "")
Er mwyn ei gwneud yn haws rheoli eich patrymau , gallwch fewnbynnu'r regex mewn cell rhagddiffiniedig a'i gyflenwi i'r fformiwla gan ddefnyddio cyfeirnod absoliwt fel $A$2, felly ni fydd cyfeiriad y gell wedi newid wrth gopïo'r fformiwla i lawr y golofn.
=RegExpReplace(A5, $A$2, "")
Dileu mwy nag un gofod gwyn
I dynnu manwl gwyn ychwanegol (h.y. mwy na n un bwlch yn olynol), defnyddiwch yr un regex \s+ ond disodli'r cyfatebion a ddarganfuwyd gydag un nod gofod.
Patrwm : \s+
Amnewid :" "
=RegExpReplace(A5, "\s+", " ")
Rhowch sylw fod y fformiwla hon yn cadw un nod gofod nid yn unig rhwngo dan y set ddata, mae'n debyg eich bod am docio'r holl ofodau arwain / trelar a phob gofod rhyngddynt ac eithrio un, gan gadw llinellau lluosog yn gyfan. I gyflawni'r dasg, bydd angen dwy ffwythiant RegExpReplace gwahanol.
Mae'r ffwythiant cyntaf yn disodli bylchau lluosog gydag un nod gofod.
=RegExpReplace(A5, " +", " ")
Mae'r llall yn stripio bylchau o ddechrau a diwedd llinell:
=RegExpReplace(A5, "^ +| +$", "")
Nythwch y ddwy swyddogaeth un i'r llall:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
A byddwch yn cael canlyniad perffaith:
Regex i ddisodli bylchau lluosog ag un nod
Rhag ofn eich bod am dynnu pob bwlch o linyn a disodli pob grŵp o fylchau olynol gyda nod penodol, dyma beth sydd angen i chi ei wneud:
Yn gyntaf, defnyddiwch y regex hwn i docio bylchau gwyn sy'n arwain ac yn llusgo:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
Yna, gwasanaethwch y swyddogaeth uchod i ddadl testun o RegExpReplace arall sy'n disodli un neu fwy o ofodau gwyn olynol gyda'r nod rydych chi'n ei nodi, e.e. cysylltnod:
Patrwm : \s+
Newid : -
A chymryd bod y llinyn ffynhonnell yn A8, y fformiwla yn cymryd y siâp hwn:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
Neu gallwch fewnbynnu'r patrymau a'r amnewidiadau mewn celloedd ar wahân fel y dangosir yn y sgrinlun:
Regex i dynnu llinellau gwag
Dyma gwestiwn y mae defnyddwyr sydd â llinellau lluosog mewn un gell yn gofyn yn aml: "Mae yna lawer o linellau gwag yn fy nghelloedd. A oes unrhyw ffordd i'w gaelgwared arnyn nhw heblaw mynd drwy bob cell a dileu pob llinell â llaw?" Yr ateb: Mae hynny'n hawdd! llinell nesaf \n, yr regex yw:
Patrwm : ^\n
Os yw eich llinellau gwag yn cynnwys bylchau neu dabiau, defnyddiwch y mynegiad rheolaidd hwn:
Patrwm : ^[\t ]*\n
Amnewid y regex gyda llinyn gwag gan ddefnyddio'r fformiwla hon, a bydd pob llinell wag wedi diflannu ar unwaith!
=RegExpReplace(A5, $A$2, "")
6>Dileu bylchau gwyn gyda RegEx Tools
Dim ond cyfran fechan o bosibiliadau bendigedig a ddarparwyd gan regexes a ddangosodd yr enghreifftiau uchod. mae nodweddion mynegiadau rheolaidd clasurol ar gael yn VBA.
Yn ffodus, mae'r Offer RegEx sydd wedi'u cynnwys gyda'n Ultimate Suite yn rhydd o'r cyfyngiadau hyn gan eu bod yn cael eu prosesu gan injan .NET RegEx Microsoft. Mae hyn yn gadael i chi adeiladu patrymau mwy soffistigedig sy'n nid ydynt yn cael eu cefnogi gan VBA RegExp w fe welwch enghraifft o fynegiant rheolaidd o'r fath.
Regex i dynnu'r gofod rhwng rhifau
Mewn llinyn alffaniwmerig, mae'n debyg eich bod am dynnu bylchau gwyn rhwng rhifau yn unig, felly llinyn megis Mae "A 1 2 B" yn dod yn "A 12 B".
I gyd-fynd â gofod gwyn rhwng unrhyw ddau ddigid, gallwch ddefnyddio'r edrychiadau canlynol:
Patrwm : (?<=\d)\s+(?=\d)
I greu fformiwla yn seiliedig arar y regexes uchod, dyma ddau gam hawdd i'w perfformio:
- Ar y tab Ablebits Data , yn y grŵp Text , cliciwch Regex Offer .
- Ar y paen Regex Tools , dewiswch y data ffynhonnell, rhowch eich regex, dewiswch y Dileu opsiwn, a tharo Dileu .
I gael y canlyniadau fel fformiwlâu, nid gwerthoedd, cofiwch roi tic yn y blwch ticio Mewnosod fel fformiwla .
<24
Mewn eiliad, fe welwch y ffwythiant AblebitsRegexRemove wedi'i fewnosod mewn colofn newydd i'r dde o'r data gwreiddiol.
Fel arall, gallwch fewnbynnu'r regex mewn rhyw gell , dywedwch A5, a mewnosodwch y fformiwla yn uniongyrchol mewn cell gan ddefnyddio'r blwch deialog Mewnosod Swyddogaeth , lle mae AblebitsRegexRemove wedi'i gategoreiddio o dan AblebitsUDFs .
Gan fod y ffwythiant yma wedi ei ddylunio yn arbennig ar gyfer tynnu llinynnau, dim ond dwy arg sydd ei angen - y llinyn mewnbwn a regex:
=AblebitsRegexRemove(A5, $A$2)
Dyna sut i dynnu bylchau yn Excel gan ddefnyddio ymadroddion rheolaidd. Diolch i chi am ddarllen ac edrychaf ymlaen at eich gweld ar ein blog wythnos nesaf!
Ar gael i'w lawrlwytho
Dileu gofod gwyn gyda regex - enghreifftiau (ffeil .xlsm)
Ultimate Suite - fersiwn prawf (ffeil.exe)
geiriau ond hefyd ar ddechrau a diwedd llinyn, nad yw'n dda. I gael gwared ar ofod gwyn sy'n arwain ac yn llusgo, nythwch y fformiwla uchod i swyddogaeth RegExpReplace arall sy'n tynnu bylchau o'r dechrau a'r diwedd: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex i dileu gofod gwyn arweiniol a llusgo
I chwilio am ofod gwyn ar ddechrau neu ddiwedd llinell, defnyddiwch y dechrau ^ a diwedd $ angorau.
Arwain gofod gwyn:<3
Patrwm : ^[\s]+
Trailing gofod gwyn:
Patrwm : [\s ]+$
Arwain a trelar gofod gwyn:
Patrwm : ^[\s]+