Clàr-innse
San oideachadh seo, bheir sinn sùil mhionaideach air mar a chleachdas tu regex gus teudan a mhaidseadh ann an Excel.
Nuair a dh'fheumas tu luach sònraichte a lorg ann an raon de cheallan, bhiodh tu a’ cleachdadh an gnìomh MATCH no XMATCH. Nuair a bhios tu a’ coimhead airson sreang sònraichte ann an cealla, bidh na gnìomhan FIND and SEARCH feumail. Agus ciamar a tha fios agad a bheil fiosrachadh ann an cealla a tha a rèir pàtran sònraichte? Gu follaiseach, le bhith a’ cleachdadh abairtean cunbhalach. Ach a-mach às a’ bhogsa chan eil Excel a’ toirt taic do regexes! Na gabh dragh, bheir sinn air :)
Gnìomh Excel VBA Regex gus sreangan a mhaidseadh
Mar a tha e gu math soilleir bhon cheann, gus abairtean cunbhalach a chleachdadh ann an Excel, feumaidh tu an gnìomh agad fhèin a chruthachadh. Gu fortanach, tha nì RegExp in-thogail aig Excel's VBA, a dh'fhaodas tu a chleachdadh sa chòd agad mar a chithear gu h-ìosal:
Gnìomh Poblach RegExpMatch (input_range As Range, pattern As String , Optional match_case As Boolean = True ) Mar Variant Dim arRes() Mar Variant’ sreath airson na toraidhean a stòradh Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long’ clàr-innse na loidhne làithreach ann an raon an stòr, clàr-amais a’ cholbh làithreach anns an raon stòr, cunntadh sreathan, cunntadh de colbhan air Mearachd GoTo ErrHandl RegExpMatch = arRes Suidhich regex = CreateObject ( "VBScript.RegExp") regex.pattern = pattern regex.Global = Fìor regex.MultiLine = Fìor Ma tha Fìor = match_case An uairsin regex.ignorecase = False regex regex = Truecase = True regex. Crìochnaichabairtean.Pàtran : \b[\w\.\-]+@[A-Za-z0-9]+[A-Za-z0-9\.\- ]*[A-Za-z0-9]+\.[A-Za-z]{2,24}\b
Gus tuigse nas fheàrr fhaighinn air na tha dol air adhart an seo, leig dhuinn sùil nas mionaidiche a thoirt air gach pàirt :
- Faodaidh an t-ainm-cleachdaiche a bhith a’ gabhail a-steach litrichean, àireamhan, fo-sgrìobhaidhean, dotagan agus tàthan. A’ cumail nar cuimhne gu bheil \w a’ maidseadh litir, figear no fo-sgrìobhadh sam bith, gheibh sinn an regex a leanas: [\ w\.\-]+
- Faodaidh ainm fearainn a bhith a’ toirt a-steach litrichean mòra is beaga, àireamhan, tàthan (ach chan ann anns a’ chiad suidheachadh no an suidheachadh mu dheireadh) agus dotagan (air eagal fo-roinnean). Leis nach eil fo-sgrìobhaidhean ceadaichte, an àite \w tha sinn a’ cleachdadh 3 seataichean charactaran eadar-dhealaichte: [A-Za-z0-9]+[A-Za-z0-9\.\-]*[A-Za-z0-9 ]+
- Tha àrainn àrd-ìre air a dhèanamh suas de dot le litrichean mòra agus litrichean beaga às a dhèidh. Faodaidh eadar 2 is 24 litrichean a bhith ann (an TLD as fhaide a tha ann an-dràsta): \.[A-Za-z]{2,24}
An aire. Tha am pàtran a’ gabhail ris gu bheil 2 no barrachd charactaran alfaimigeach anns an ainm fearainn.
Leis an teacsa thùsail ann an A5 agus am pàtran ann an A5, tha an fhoirmle a’ gabhail a’ chruth seo:
=RegExpMatch(A5, $A$2)
No dh’ fhaodadh tu cunbhalachd nas sìmplidhe a chleachdadh abairt airson dearbhadh post-d le seata charactaran beaga no litrichean mòra:
Pàtran : \b[\w\.\-]+@[a-z0-9]+[a- z0-9\.\-]*[a-z0-9]+\.[a-z]{2,24}\b
Ach dèan do fhoirmle neo-mhothachail a’ chùis:
=RegExpMatch(A5, $A$2, FALSE)
Foirmle Excel IF le match regex
Air sgàth 's gu bheil in-thogail agus cleachdadhtha gnìomhan a' dol air adhart gu math, chan eil dad ann a chuireadh stad ort bho bhith gan cleachdadh ann an aon fhoirmle.
Gus rudeigin a thilleadh no obrachadh a-mach ma tha abairt àbhaisteach air a mhaidseadh agus rudeigin eile mur eil e air a mhaidseadh, cuir a-steach an àbhaisteach RegExpMatch gnìomh ann an teacsa loidsigeach IF:
IF(RegExpMatch (…), [value_if_true], [value_if_false])Mar eisimpleir, ma tha seòladh puist-d dligheach ann an sreang ann an A5, faodaidh tu "Tha" a thilleadh; air dhòigh eile “Chan eil”.
=IF(RegExpMatch(A5, $A$2,), "Yes", "No")
Cunnt a bheil regex air a mhaidseadh
Leis nach eil gnìomhan dùthchasach Excel a’ cur taic ri abairtean àbhaisteach, is e chan eil e comasach regex a chuir gu dìreach ann an gnìomh COUNTIS no COUNTIFS. Gu fortanach, 's urrainn dhut an gnìomh seo aithris leis a' ghnìomh àbhaisteach againn.
A' gabhail ris gu bheil thu air regex a chleachdadh gus àireamhan fòn a mhaidseadh agus na toraidhean ann an colbh B a chur a-mach. Gus faighinn a-mach cia mheud cealla anns a bheil àireamhan fòn, chan fheum thu ach gus na TRUE luachan ann am B5:B9 a chunntadh. Agus faodar sin a dhèanamh gu furasta leis an fhoirmle àbhaisteach COUNTIF:
=COUNTIF(B5:B9, TRUE)
Nach eil thu ag iarraidh colbhan a bharrachd san duilleag-obrach agad? Chan eil trioblaid ann. Le bhith a’ cumail nar cuimhne gum faod an gnìomh àbhaisteach againn grunn cheallan a phròiseasadh aig an aon àm agus gun urrainn do SUM Excel luachan a chuir suas ann an sreath, seo na nì thu:
- Sola raon iomradh air RegExpMatch, agus mar sin tillidh e sreath de luachan TRUE agus FALSE.
- Cleachd diùltadh dùbailte (--) gus na luachan loidsigeach a cho-èigneachadh ri feadhainn aguszeros.
- Faigh an gnìomh SUM gus 1’s is 0’s a chur suas san raon a thig às.
=SUM(--RegExpMatch(A5:A9, $A$2))
Regex a’ maidseadh le Ultimate Suite
Is urrainn do luchd-cleachdaidh ar Ultimate Suite ceithir gnìomhan cumhachdach Regex a luathachadh gun a bhith a’ cur còd VBA sam bith ris na leabhraichean-obrach aca oir tha iad air am filleadh a-steach gu rèidh ann an Excel rè stàladh an tuilleadain. Tha na gnìomhan gnàthaichte againn air an giullachd leis an einnsean àbhaisteach .NET RegEx agus a’ toirt taic do abairtean cunbhalach clasaigeach làn-nochdadh.
Mar a chleachdas tu gnìomh àbhaisteach RegexMatch
A’ gabhail ris gu bheil an dreach as ùire de Ultimate Suite agad air a chuir a-steach ( 2021.4 no nas fhaide air adhart), faodaidh tu foirmle Regex Match a chruthachadh ann an dà cheum shìmplidh:
- Air an taba Ablebits Data , anns a’ bhuidheann Text , cliog Innealan Regex .
- Tagh na sreangan tùsail.
- Cuir a-steach am pàtran agad.
- Tagh an roghainn Match .
- Gus na toraidhean a bhith mar fhoirmlean, chan e luachan, tagh an Cuir a-steach mar bhogsa-seic foirmle .
- Briog air a’ phutan Match .
Mionaid às deidh sin, tha an gnìomh AblebitsRegexMatch air a chuir a-steach ann an colbh ùr air taobh deas an dàta agad.
San dealbh gu h-ìosal, nì an gnìomh sgrùdadh a bheil 7-fhigearach anns na teudan ann an colbh A àireamhan neo nach eil.
Molaidhean:
- An func faodar a chuir a-steach gu dìreach ann an cealla tron bhogsa deasbaid àbhaisteach Insert Function , far a bheil e air a sheòrsachadh fo AblebitsUDFs .
- Mar as àbhaist, thèid abairt àbhaisteach a chur ris an fhoirmle, ach faodaidh tu cuideachd a chumail e ann an cealla fa leth. Airson seo, dìreach cleachd iomradh cealla airson an 2na argamaid.
- A ghnàth, tha an gnìomh mothachail air cùis . Airson maidseadh cùise neo-mhothachail, cleachd am pàtran (?i).
Airson tuilleadh fiosrachaidh, faic an gnìomh AblebitsRegexMatch.
Sin mar a nì thu maidseadh abairtean cunbhalach ann an Excel. Tha mi a’ toirt taing dhut airson do leughadh agus tha mi a’ coimhead air adhart ri d’fhaicinn air ar blog an ath sheachdain!
Luchdaich a-nuas ri fhaighinn
Eisempleirean Excel Regex Match (faidhle .xlsm)
Ultimate Suite 14- latha dreach làn-ghnìomhach (faidhle .exe)
Ma tha cntInputRows = input_range.Rows.Count cntInputCols = input_range.Columns.Count ReDim arRes(1 Gu cntInputRows, 1 Gu cntInputCols) Airson iInputCurRow = 1 Gu cntInputRows Airson iInputCurCol = ( 1 To cntInputRows , 1 To cntInputCols ) Airson iInputCurRow = 1 To cntInputRows Airson iInputCurCol = ( 1 To cntInputS ) .Cells(iInputCurRow, iInputCurCol).Luach) Air adhart An ath Air adhart RegExpMatch = gnìomh fàgail arRes ErrHandl: RegExpMatch = Gnìomh Crìochnachaidh CVErr(xlErrValue)Cuir a-steach an còd san deasaiche VBA, agus an gnìomh RegExpMatch ùr agad deiseil airson a chleachdadh. Mura h-eil thu eòlach air VBA, faodaidh an stiùireadh seo a bhith cuideachail: Mar a chuireas tu còd VBA a-steach ann an Excel.
Thoir an aire. Às deidh dhut an còd a chuir a-steach, cuimhnich gun sàbhail thu am faidhle agad mar leabhar-obrach macro-comas (.xlsm).
Co-chàradh RegExpMatch
Nì an gnìomh RegExpMatch sgrùdadh a bheil pàirt sam bith den t-sreang stòr a’ freagairt ri abairt àbhaisteach. 'S e luach Boole a tha san toradh: TRUE ma lorgar co-dhiù aon mhaidseadh, FALSE air dhòigh eile.
Tha 3 argamaidean aig a' ghnìomh àbhaisteach againn - tha feum air a' chiad dhà agus tha am fear mu dheireadh roghainneil:
RegExpMatch(text , pàtran, [match_case])Far a bheil:
- Teacs (riatanach) - aon teud no barrachd airson rannsachadh a-steach. Gabhaidh seo a thoirt seachad mar iomradh cealla no raoin.
- Pàtran (riatanach) - an abairt àbhaisteach airson a bhith co-ionnan. Nuair a thèid a chur gu dìreach ann am foirmle, feumaidh pàtran a bhith air a chuartachadh ann an luachan dùbailte.
- Match_case (roghainneil) - a' mìneachadh a' mhaidse.seòrsa. Ma tha TRUE no air fhàgail a-mach (bunaiteach), thèid maidseadh cùis-mothachail a dhèanamh; ma tha FALSE - neo-mhothachail air cùis.
Tha an gnìomh ag obair anns a h-uile tionndadh de Excel 365, Excel 2021, Excel =SUM(--RegExpMatch(A5:A9, $A$2))
, Excel 2016, Excel 2013 agus Excel 2010.
3 rudan a nì thu bu chòir fios a bhith agad mu RegExpMatch
Mus ruig sinn àireamhachadh practaigeach, thoir an aire do na puingean a leanas a tha a’ soilleireachadh cuid de fheartan teicnigeach:
- Faodaidh an gnìomh aon chealla <9 a phròiseasadh> no raon de cheallan . Anns a' chùis mu dheireadh, tha na toraidhean air an tilleadh anns na ceallan ri thaobh ann an cruth raon fiùghantach, no raon dòrtadh, mar a chithear san eisimpleir seo. 9>. Gus a’ chùis teacsa a leigeil seachad, suidhich an argamaid match_case gu FALSE. Air sgàth cuingealachaidhean VBA Regexp, chan eil taic ri pàtran neo-mhothachail (?i).
- Mura lorgar pàtran dligheach, tillidh an gnìomh FALSE; ma tha am pàtran neo-dhligheach , a #VALUE! thachair mearachd.
Gu h-ìosal, lorgaidh tu beagan eisimpleirean regex match a chaidh a chruthachadh airson adhbharan taisbeanaidh. Chan urrainn dhuinn gealltainn gun obraich na pàtrain againn gun locht le raon nas fharsainge de dhàta cuir a-steach anns na fìor dhuilleagan-obrach agad. Mus cuir thu a-steach cinneasachadh, dèan cinnteach gun dèan thu deuchainn agus atharraich na pàtrain sampall againn a rèir do fheumalachdan.
Mar a chleachdas tu regex gus sreangan a mhaidseadh ann an Excel
Nuair a bhios na teudan uile a tha thu airson a mhaidseadh an aon phàtran,tha abairtean cunbhalach na fhìor fhuasgladh.
A’ gabhail ris gu bheil raon de cheallan (A5:A9) agad anns a bheil diofar mion-fhiosrachadh mu chuid de nithean. Tha thu airson faighinn a-mach dè na ceallan aig a bheil SKUn. Leis gu bheil gach SKU air a dhèanamh suas de 2 phrìomh litir, tàthan, agus 3 àireamhan, faodaidh tu an maidseadh leis an abairt a leanas.
Pàtran : \b[A-Z]{2}-\ d{3}\b
Far a bheil [A-Z]{2} a' ciallachadh 2 litir mhòr sam bith o A gu Z agus \d{3} a' ciallachadh 3 àireamhan eadar 0 is 9. Tha an caractar \b a' comharrachadh facal crìoch, a’ ciallachadh gur e facal air leth a th’ ann an SKU, agus chan eil e na phàirt de shreang nas motha leithid 23-MAR-2022.
Leis a’ phàtran stèidhichte, is urrainn dhuinn gluasad air adhart gu bhith a’ sgrìobhadh foirmle. Gu bunaiteach, chan eil cleachdadh gnìomh àbhaisteach eadar-dhealaichte bho fhear dùthchasach. Cho luath ‘s a thòisicheas tu a’ taipeadh foirmle, nochdaidh ainm an gnìomh anns an liosta a mhol Excel's AutoComplete. Ach, tha nuance no dhà ann an Dynamic Array Excel (Microsoft 365 agus Excel 2021) agus Excel traidiseanta ( =SUM(--RegExpMatch(A5:A9, $A$2))
agus dreachan nas sine).
Dèan maids eadar sreang ann an aon chealla
Gus sreang a mhaidseadh ann an aon chealla, thoir iomradh air a’ chill sin sa chiad argamaid. Tha còir gum bi abairt àbhaisteach san dàrna argamaid.
=RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")
Faodaidh am pàtran a chumail ann an cealla ro-mhìnichte cuideachd, a tha glaiste le làn-iomradh ($A$2):<3
=RegExpMatch(A5, $A$2)
An dèidh dhut an fhoirmle a chur a-steach sa chiad chill, 's urrainn dhut a shlaodadh sìos chun a h-uile sreath eile.
An dòigh seoag obair gu h-àlainn ann an a h-uile tionndadh Excel .
Maids teudan ann an ioma-cheallan aig an aon àm
Gus iomadh sreath a mhaidseadh le aon fhoirmle, cuir a-steach iomradh raon sa chiad argamaid:
=RegExpMatch(A5:A9, "\b[A-Z]{2}-\d{3}\b")
Ann an Excel 365 agus Excel 2021 a tha a’ toirt taic do arrays fiùghantach, bidh e ag obair mar seo - bidh thu a’ taipeadh am foirmle sa chiad chill, buail Enter , agus bidh am foirmle gu fèin-obrachail a’ dòrtadh a-steach do na ceallan gu h-ìosal. ag obair a-mhàin mar fhoirmle traidiseanta CSE rèite, a thèid a chur a-steach ann an raon de cheallan agus a chrìochnachadh le putadh air na h-iuchraichean Ctrl + Shift + Enter còmhla.
Regex gus an àireamh a mhaidseadh
Airson aon fhigear a mhaidseadh eadar 0 is 9, cleachd an caractar \d san regex. A rèir na h-obrach sònraichte a th' agad, cuir àireamh-tomhais iomchaidh ris no cruthaich pàtran nas iom-fhillte.
Regex gus àireamh sam bith a mhaidseadh
Gus àireamh sam bith de dh'fhaid a mhaidseadh, cuir an tomhas-tomhais + dìreach às dèidh an / d caractar, a chanas gun coimhead thu airson àireamhan anns a bheil 1 fhigear no barrachd.
Pàtran : \d+
=RegExpMatch(A5:A9, "\d+")
Regex gus an àireamh de dh’fhaid sònraichte a mhaidseadh
Mas e an t-amas agad luachan àireamhach a mhaidseadh le àireamh shònraichte de dh’ àireamhan, cleachd \d còmhla ri àireamhair iomchaidh.
Mar eisimpleir, gus àireamhan fàirdeal a cho-fhreagairt le dìreach 7 àireamhan, chleachdadh tu \d{7}. Ach, cumaibh cuimhne gum bi e co-ionnan ri 7mar a bhiodh dùil:
Notaichean:
- Chan eil còdan eadar-nàiseanta air an sgrùdadh, 's mar sin dh'fhaodadh nach eil iad an làthair.
- Ann an abairtean cunbhalach, tha \s a’ ciallachadh caractar àite geal sam bith leithid àite, taba, tilleadh carbaid, no loidhne ùr. Airson dìreach beàrnan a cheadachadh, cleachd [-\. ] an àite [-\.\s].
- [^13] caractar singilte sam bith nach eil 1 no 3.
- [^1-3] co-ionnan ri caractar singilte sam bith nach eil ann an 1, 2 no 3 (i.e. figear sam bith bho 1 gu 3).
- Chan obraich an regex gu h-àrd ach airson teudan aon loidhne . A thaobh teudan loidhne-milti, bidh na caractaran ^ agus $ a’ maidseadh toiseach is deireadh gach loidhne an àite toiseach is deireadh an t-sreang in-chur, mar sin cha dèan an regex ach sgrùdadh sa chiad loidhne.
- Gus teudan a mhaidseadh nach tòisich le teacsa sònraichte , cleachd abairt àbhaisteach mar ^(?!lemons).*$
- Gus teudan nach a mhaidseadh le teacsa sònraichte , cuir a-steachan t-sreang deiridh acair a-steach don phàtran rannsachaidh: ^((?!lemons$).)*$
Regex gun a bhith a' maidseadh caractar
Gus teudan a lorg NACH anns a bheil caractar sònraichte, 's urrainn dhut clasaichean caractairean àicheadh [^ ] a chleachdadh a tha a' freagairt air rud sam bith NACH EIL eadar camagan. Mar eisimpleir: maidsidh
Ann an liosta àireamhan fòn, saoil gu bheil thu airson an fheadhainn aig nach eil còd dùthcha a lorg. A’ cumail nad inntinn gu bheil còd eadar-nàiseanta sam bith a’ toirt a-steach an soidhne +, faodaidh tu an clas caractar [^\+] a chleachdadh gus sreangan a lorg anns nach eil soidhne plus. Tha e cudromach tuigsinn gu bheil an abairt gu h-àrd a 'freagairt ri caractar singilte sam bith nach eil +. Leis gum faod àireamh fòn a bhith an àite sam bith ann an sreang, chan ann gu riatanach aig an fhìor thoiseach, thèid an tomhas-tomhais * a chuir ris gus sùil a thoirt air gach caractar às deidh sin. Bidh na h-acraichean tòiseachaidh ^ is deireadh $ a’ dèanamh cinnteach gun tèid an sreang gu lèir a phròiseasadh. Mar thoradh air an sin, gheibh sinn an abairt àbhaisteach gu h-ìosal a tha ag ràdh “na bi a’ freagairt ris a’ charactar + ann an suidheachadh sam bith san t-sreang”.
Pàtran :^[^\+]*$
=RegExpMatch(A5, "^[^\+]*$")
Regex gun a bhith co-ionnan ris an t-sreang
Ged nach eil co-theacs abairt cunbhalach sònraichte ann airson gun a bhith co-ionnan ri sreang shònraichte, 's urrainn dhut an giùlan seo aithris le bhith a' cleachdadh sealladh àicheil.
Ma tha thu airson teudan a lorg anns nach eil am facal "lemons". Obraichidh an abairt àbhaisteach seo deas-ghnàth:
Pàtran : ^((?!lemons).)*$
Gu dearbh, tha feum air beagan mìneachaidh an seo. Tha an sealladh àicheil (?!lemons) a' coimhead chun na làimh dheis gus faicinn nach eil facal "lemons" romhainn. Mura h-eil "lemons" ann, bidh an dot a 'maidseadh caractar sam bith ach a-mhàin briseadh loidhne. Cha dèan an abairt gu h-àrd ach aon seic, agus bidh an tomhas-tomhais * ga ath-aithris uair no dhà, bho thoiseach an t-sreang air acair le ^ gu deireadh na sreang air acair le $.
Gus an teacsa a leigeil seachad, shuidhich sinn an 3mh argamaid gu FALSE gus ar gnìomh a dhèanamh neo-mhothachail:
=RegExpMatch(A5, $A$2, FALSE)
Molaidhean is notaichean:
Cùis neo-mhothachail a' maidseadh
Ann an abairtean àbhaisteach clasaigeach, tha pàtran sònraichte ann airson maidseadh cùis-mhothachail (?i), nach eil a’ faighinn taic ann an VBA RegExp. Gus faighinn seachad air a’ chuingealachadh seo, gabhaidh ar gnìomh gnàthaichte ris an treas argamaid roghnach leis an ainm match_case . Gus maidseadh cùis-mothachail a dhèanamh, dìreach cuir gu FALSE e.
Canaidh sinn gu bheil thu airson cinn-latha a chomharrachadh mar 1-Mar-22 no 01-MAR-2022. Airson na fòrmatan dd-mmm-yyyy agus d-mmm-yy a mhaidseadh, tha sinn a' cleachdadh an abairt àbhaisteach a leanas.
Pàtran : \b\d{1,2}-(Faoilleachàireamhan an àite sam bith san t-sreang a’ toirt a-steach àireamh 10-digit no 100-digit. Mur e seo a tha thu a' sireadh, cuir am facal crìoch \b air gach taobh.
Pàtran : \b\d{7}\b
=RegExpMatch(A5:A9, "\b\d{7}\b")
Regex gus àireamhan fòn a mhaidseadh
Leis gun gabh àireamhan fòn a sgrìobhadh ann an diofar chruthan, tha feum air abairt àbhaisteach nas ionnsaichte ma cho-fhreagras iad.
Anns an t-seata gu h-ìosal, bidh sinn a’ lorg àireamhan 10-fhigearach aig a bheil 3 àireamhan anns a’ chiad 2 bhuidheann agus 4 àireamhan sa bhuidheann mu dheireadh. Faodar na buidhnean a sgaradh le ùine, tàthan no àite. Dh'fhaoidte gu bheil no nach fhaod a' chiad chuantal a bhith air a chuartachadh ann am brathan.
Pàtran: (\(\d{3}\)