Efnisyfirlit
Í þessari kennslu munum við skoða nokkrar leiðir til að finna og skipta um mörg orð, strengi eða einstaka stafi, svo þú getir valið þann sem hentar þínum þörfum best.
Hvernig leitar fólk venjulega í Excel? Aðallega með því að nota Finndu & Skipta út eiginleika, sem virkar fínt fyrir stök gildi. En hvað ef þú hefur tugi eða jafnvel hundruð hluti til að skipta út? Vissulega myndi enginn vilja gera allar þessar skiptingar handvirkt einn í einu og gera það svo aftur þegar gögnin breytast. Sem betur fer eru nokkrar árangursríkari aðferðir til að gera massaskipti í Excel og við ætlum að kanna hverja þeirra í smáatriðum.
Finndu og skiptu út mörgum gildum fyrir hreiður SUBSTITUTE
Auðveldasta leiðin til að finna og skipta út mörgum færslum í Excel er með því að nota SUBSTITUTE aðgerðina.
Rökfræði formúlunnar er mjög einföld: þú skrifar nokkrar einstakar aðgerðir til að skipta út gömlu gildi fyrir nýtt. . Og síðan hreiður þú þessar aðgerðir inn í aðra, þannig að hver síðari STAÐMAÐUR notar úttak fyrri STAÐMAKA til að leita að næsta gildi.
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( texti, old_text1, new_text1), old_text2, new_text2), old_text3, new_text3)Í listanum yfir staðsetningar í A2:A10, gerum ráð fyrir að þú viljir skipta út styttum landanöfnum (eins og FR , UK og USA ) fyrir fullt MassReplace virka aðeins í vinnubókinni sem þú hefur sett kóðann inn í. Ef þú ert ekki viss um hvernig á að gera þetta rétt, vinsamlegast fylgdu skrefunum sem lýst er í Hvernig á að setja inn VBA kóða í Excel.
Þegar kóðanum hefur verið bætt við vinnubókina þína mun aðgerðin birtast í formúlunni intellisense - aðeins Heiti fallsins, ekki rökin! Þó tel ég að það sé ekkert mál að muna setningafræðina:
MassReplace(inntakssvið, finna_svið, skipta_svið)Hvar:
- Inntakssvið - upprunasviðið þar sem þú vilt skipta út gildum.
- Finn_svið - stafirnir, strengirnir eða orðin til að leita að.
- Skipta_svið - stafirnir, strengirnir, eða orð til að skipta út fyrir.
Í Excel 365, vegna stuðnings við kraftmikla fylki, virkar þetta sem venjuleg formúla, sem aðeins þarf að slá inn í efsta reitinn (B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
Í forvirku Excel virkar þetta sem gamla stíl CSE fylkisformúla: þú velur allt upprunasviðið (B2:B10), slærð inn formúlu og ýttu á Ctrl + Shift + Enter lyklana samtímis til að klára hana.
Kostir : ágætis valkostur við sérsniðna LAMBDA aðgerð í Excel 2019 , Excel 2016 og eldri útgáfur
Gallar : Vinnubókin verður að vera vistuð sem .xlsm skrá sem er virkjuð fyrir makró
Bulk replace í Excel með VBA macro
Ef þú elskar farartæki pörun algeng verkefni með fjölvi, þá þúgetur notað eftirfarandi VBA kóða til að finna og skipta um mörg gildi á bilinu.
Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error Resume Next Set SourceRng = Application.InputBox( "Source data: " , "Bulk Replace" , Application.Selection.Address, Type :=8) Err.Clear If Not SourceRng Is Nothing Then Set ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear If Not ReplaceRng Is Nothing Then Application.ScreenUpdating = False For Every Rng In ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End SubTil að nýta makróið strax geturðu halað niður sýnishornsvinnubókinni okkar sem inniheldur kóðann. Eða þú getur sett kóðann inn í þína eigin vinnubók.
Hvernig á að nota fjölva
Áður en þú keyrir fjölva skaltu slá inn gamla og nýja gildin í tvo aðliggjandi dálka eins og sýnt er á myndinni hér að neðan ( C2:D4).
Og veldu síðan upprunagögnin þín, ýttu á Alt + F8 , veldu BulkReplace fjölva og smelltu á Run .
Þar sem uppspretta reiði er forvalið skaltu bara staðfesta tilvísunina og smella á OK:
Eftir það, veldu skipta út svið og smelltu á OK:
Lokið!
Kostir : uppsetning einu sinni, endurnotkun hvenær sem er
Gallar : keyra þarf fjölvi með öllum gögnumbreyta
Margfalda finna og skipta út í Excel með Substring tool
Í fyrsta dæminu nefndi ég að hreiður SUBSTITUTE er auðveldasta leiðin til að skipta um mörg gildi í Excel. Ég viðurkenni að ég hafði rangt fyrir mér. Ultimate Suite okkar gerir hlutina enn auðveldari!
Til að gera fjöldaskipta í vinnublaðinu þínu skaltu fara á flipann Ablebits Data og smella á Substring Tools > Skipta út undirstrengi .
Gjaldglugginn Skipta undirstrengi birtist og biður þig um að skilgreina Uppruna sviðið og Substrings svið.
Þegar sviðin tvö eru valin skaltu smella á hnappinn Replace og finna niðurstöðurnar í nýjum dálki sem er settur inn til hægri af upprunalegu gögnunum. Já, það er svo auðvelt!
Ábending. Áður en þú smellir á Skipta út er eitt mikilvægt sem þú ættir að hafa í huga - Hástafir og hástafir reiturinn. Vertu viss um að velja það ef þú vilt meðhöndla há- og lágstafi sem mismunandi stafi. Í þessu dæmi, merkjum við þennan valmöguleika vegna þess að við viljum aðeins skipta út stórum strengjum og skilja undirstrengina eins og "fr", "uk" eða "ak" eftir í öðrum orðum óbreyttum.
Ef þú ert forvitinn að vita hvaða aðrar magnaðgerðir er hægt að framkvæma á strengjum skaltu skoða önnur undirstrengjaverkfæri sem fylgja Ultimate Suite okkar. Eða jafnvel betra, hlaðið niður matsútgáfunni hér að neðan og prófið hana!
Svona á að finna og skipta útmörg orð og stafir í einu í Excel. Ég þakka þér fyrir lesturinn og vonast til að sjá þig á blogginu okkar í næstu viku!
Fáanlegt niðurhal
Margt að finna og skipta út í Excel (.xlsm skrá)
Ultimate Suite 14 -day fullkomlega virk útgáfa (.exe skrá)
nöfn.Til að gera það skaltu slá inn gömlu gildin í D2:D4 og nýju gildin í E2:E4 eins og sýnt er á skjámyndinni hér að neðan. Og settu síðan formúluna hér að neðan í B2 og ýttu á Enter:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
...og þú munt láta skipta út í einu:
Athugið að ofangreind nálgun virkar aðeins í Excel 365 sem styður kraftmikla fylki.
Í forvirkum útgáfum af Excel 2019, Excel 2016 og eldri þarf formúlan að vera skrifað fyrir efsta reitinn (B2) og síðan afritað í reitina hér að neðan:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Vinsamlegast athugaðu að í þessu tilviki læsum við skiptigildunum með algerum frumutilvísunum, svo þær breytast ekki þegar formúlan er afrituð.
Athugið. SUBSTITUTE aðgerðin er hástafanæm , sem þýðir að þú ættir að slá inn gömlu gildin ( gamall_texti ) með sama hástöfum og þau birtast í upprunalegu gögnunum.
Eins auðveld og hún mögulega gæti verið, þá hefur þessi aðferð verulegan galla - þegar þú átt tugi hluta til að skipta út, verða hreiðraðir aðgerðir frekar erfiðar í umsjón.
Kostir : auðvelt -að framkvæma; studd í öllum Excel útgáfum
Gallar : best að nota fyrir takmarkaðan fjölda finna/skipta út gildum
Leita og skiptu út mörgum færslum með XLOOKUP
Í aðstæðum þegar þú ert að leita að því að skipta um allt innihald frumunnar , ekki hluta þess, kemur XLOOKUP aðgerðin sér vel.
Við skulumsegðu að þú sért með lista yfir lönd í dálki A og stefni að því að skipta út öllum skammstöfunum fyrir samsvarandi fullum nöfnum. Eins og í fyrra dæmi, byrjarðu á því að slá inn "Finna" og "Skipta" inn í aðskilda dálka (D og E í sömu röð) og slærð síðan inn þessa formúlu í B2:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Þýtt úr Excel tungumálinu yfir á mannamál, hér er það sem formúlan gerir:
Leitaðu að A2 gildi (lookup_value) í D2:D4 (lookup_array) og skilaðu samsvörun frá E2:E4 (return_array). Ef það finnst ekki skaltu draga upprunalega gildið úr A2.
Tvísmelltu á fyllingarhandfangið til að fá formúluna afritaða í reitina hér að neðan og niðurstaðan mun ekki láta þig bíða:
Þar sem XLOOKUP aðgerðin er aðeins fáanleg í Excel 365, mun ofangreind formúla ekki virka í fyrri útgáfum. Hins vegar geturðu auðveldlega hermt eftir þessari hegðun með blöndu af IFERROR eða IFNA og VLOOKUP:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Athugið. Ólíkt SUBSTITUTE eru XLOOKUP og VLOOKUP aðgerðirnar ekki há- og hástöfum , sem þýðir að þær leita að uppflettigildum og hunsa stafina. Til dæmis myndi formúlan okkar skipta bæði FR og fr út fyrir Frakkland .
Kostir : óvenjuleg notkun venjulegra aðgerða; virkar í öllum Excel útgáfum
Gallar : virkar á frumustigi, getur ekki komið í stað hluta af innihaldi frumunnar
Mörg skipti með endurkvæmri LAMBDA aðgerð
Fyrir Microsoft365 áskrifendur, Excel býður upp á sérstaka aðgerð sem gerir kleift að búa til sérsniðnar aðgerðir með hefðbundnu formúlumáli. Já, ég er að tala um LAMBDA. Fegurðin við þessa aðferð er að hún getur breytt mjög langri og flókinni formúlu í mjög þétta og einfalda. Þar að auki gerir það þér kleift að búa til þínar eigin aðgerðir sem eru ekki til í Excel, eitthvað sem áður var aðeins mögulegt með VBA.
Til að fá nákvæmar upplýsingar um að búa til og nota sérsniðnar LAMBDA aðgerðir, vinsamlegast skoðaðu þessa kennslu: Hvernig að skrifa LAMBDA föll í Excel. Hér munum við ræða nokkur hagnýt dæmi.
Kostir : útkoman er glæsileg og ótrúlega einföld í notkun, sama hversu mörg skiptipar eru
Gallar : aðeins fáanlegt í Excel 365; vinnubókarsértæk og er ekki hægt að endurnýta í mismunandi vinnubækur
Dæmi 1. Leitaðu að og skiptu út mörgum orðum / strengjum í einu
Til að skipta út mörgum orðum eða texta í einu, höfum við búið til sérsniðna LAMBDA fall, nefnt MultiReplace , sem getur verið eitt af þessum myndum:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
Eða
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
Bæði eru endurkvæm aðgerðir sem kalla sig. Munurinn er aðeins í því hvernig útgöngustaðurinn er stofnaður.
Í fyrstu formúlunni athugar IF fallið hvort gamli listinn sé ekki auður (gamall""). Ef TRUE er MultiReplace fallið kallað. Ef FALSE, aðgerðinskilar texta því núverandi formi og hættir.
Önnur formúlan notar öfuga rökfræði: ef gamalt er autt (gamalt=""), þá skilar texta og hætta; annars hringdu í MultiReplace .
Það erfiðasta er náð! Það sem er eftir fyrir þig að gera er að nefna MultiReplace aðgerðina í nafnastjóranum eins og sýnt er á skjámyndinni hér að neðan. Fyrir nákvæmar leiðbeiningar, vinsamlegast sjáðu Hvernig á að nefna LAMBDA aðgerð.
Þegar aðgerðin hefur fengið nafn geturðu notað hana eins og hverja aðra innbyggða aðgerð.
Hvort sem þú velur af tveimur formúluafbrigðum sem þú velur, frá sjónarhóli notenda, er setningafræði eins einföld og þessi:
MultiReplace(texti, gamall, nýr)Hvar:
- Texti - upprunagögnin
- Gamla - gildin til að finna
- Nýtt - gildin sem á að skipta út fyrir
Tökum fyrra dæmið aðeins lengra, við skulum skipta ekki aðeins út landskammstöfunum heldur einnig ríkisskammstöfunum. Til þess skaltu slá inn skammstafanir ( gömul gildi) í dálki D sem byrjar á D2 og fullu nöfnin ( ný gildi) í dálki E sem byrjar á E2.
Í B2, sláðu inn MultiReplace aðgerðina:
=MultiReplace(A2:A10, D2, E2)
Ýttu á Enter og njóttu niðurstöðunnar :)
Hvernig þessi formúla virkar
Vísbendingin um að skilja formúluna er að skilja endurkomu. Þetta kann að hljóma flókið, en meginreglan er frekar einföld. Með hverjumendurtekning, endurkvæmt fall leysir eitt lítið dæmi um stærra vandamál. Í okkar tilviki fer MultiReplace aðgerðin í gegnum gamla og nýja gildin og, með hverri lykkju, framkvæmir eina skipti:
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
Eins og með hreiður SUBSTITUTE föll, verður niðurstaða fyrri SUBSTITUTE texti færibreytan fyrir næsta SUBSTITUTE. Með öðrum orðum, í hverju síðari símtali MultiReplace , vinnur SUBSTITUTE fallið ekki upprunalega textastrenginn, heldur úttak fyrra símtals.
Til að meðhöndla öll atriðin á gamli listanum, við byrjum á efsta hólfinu og notum OFFSET aðgerðina til að færa 1 röð niður við hverja virkni:
OFFSET(old, 1, 0)
Sama er gert fyrir nýr listi:
OFFSET(new, 1, 0)
Það sem skiptir sköpum er að útvega útgöngustað til að koma í veg fyrir að endurkvæm símtöl haldi áfram að eilífu. Það er gert með hjálp IF fallsins - ef gamla hólfið er tómt, skilar fallið texta því í núverandi mynd og fer út:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
eða
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
Dæmi 2. Skipta út mörgum stöfum í Excel
Í grundvallaratriðum getur MultiReplace aðgerðin sem fjallað var um í fyrra dæmi meðhöndla einstaka stafi líka, að því tilskildu að hver gamli og nýr stafur sé færður inn í sérstakan reit, nákvæmlega eins og skammstafað og fullt nöfn í ofangreindum skjámyndum.
Ef þú vilt frekar slá inn gamlastafi í einum reit og nýju stafirnir í öðrum reit, eða sláðu þá beint inn í formúluna, þá geturðu búið til aðra sérsniðna aðgerð, sem heitir ReplaceChars , með því að nota eina af þessum formúlum:
=LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))
Eða
=LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))
Mundu að nefna nýju Lambda fallið þitt í nafnastjóranum eins og venjulega:
Og nýja sérsniðna aðgerðin þín er tilbúin til notkunar:
ReplaceChars(text, old_chars, new_chars)Hvar:
- Texti - upprunalegu strengirnir
- Gamalt - stafirnir til að leita að
- Nýtt - stafirnir sem á að skipta út fyrir
Til að gefa það vettvangspróf, gerum eitthvað sem er oft framkvæmt á innfluttum gögnum - skiptu út snjöllum gæsalöppum og snjöllum gæsalöppum fyrir beinar gæsalappir og beinar gæsalappir.
Fyrst setjum við inn snjöllu gæsalappirnar og snjöllu gæsalappirnar í D2, beinar gæsalappir og beinar gæsalappir í E2 , aðskilja stafi með bilum fyrir betri læsileika. (Þar sem við notum sama afmörkun í báðum hólfum mun það ekki hafa nein áhrif á niðurstöðuna - Excel mun bara skipta út bili fyrir bil.)
Eftir það setjum við þessa formúlu inn í B2:
=ReplaceChars(A2:A4, D2, E2)
Og fá nákvæmlega þær niðurstöður sem við vorum að leita að:
Það er líka hægt að slá inn stafi beint í formúluna. Í okkar tilviki, mundu bara að "afrita" beinu gæsalappirnar svona:
=ReplaceChars(A2:A4, "“ ” ’", """ "" '")
Hvernig þessi formúla virkar
The ReplaceChars fallið fer í gegnum gamla_stafina og nýja_stafina strengina og gerir eina skiptingu í einu frá fyrsta stafnum til vinstri. Þessi hluti er gerður með SUBSTITUTE aðgerðinni:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
Með hverri endurtekningu fjarlægir HÆGRI aðgerðin einn staf vinstra megin við bæði gamla_stafina og new_chars strengir, þannig að LEFT gæti sótt næsta stafapar til að skipta út:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Fyrir hvert endurkvæmt símtal metur IF fallið gamla_stafir strenginn . Ef það er ekki tómt kallar aðgerðin sig. Um leið og síðasta stafnum hefur verið skipt út lýkur endurtekningarferlinu, formúlan skilar texta í núverandi mynd og hættir.
Athugið. Vegna þess að SUBSTITUTE aðgerðin sem notuð er í kjarnaformúlunum okkar er hástafanæm , meðhöndla bæði Lambdas ( MultiReplace og ReplaceChars ) hástafi og lágstafi sem mismunandi stafi.
Massað finna og skipta út með UDF
Ef LAMBDA aðgerðin er ekki tiltæk í Excel, geturðu skrifað notendaskilgreinda aðgerð fyrir margskipta á hefðbundinn hátt með VBA.
Til að greina UDF frá LAMBDA-skilgreindu MultiReplace fallinu ætlum við að nefna það öðruvísi, segjum MassReplace . Kóðinn á fallinu er sem hér segir:
Fallið MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () DimmarRes() As Variant 'fylki til að geyma niðurstöðurnar Dim arSearchReplace(), sTmp As String 'fylki hvar á að geyma finna/skipta út pörunum, tímabundinn strengur Dim iFindCurRow, cntFindRows As Long 'vísitala núverandi röð SearchReplace fylkisins, telja af röðum Dimm iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'vísitala núverandi línu í upprunasviðinu, vísitala núverandi dálks á upprunasviðinu, fjöldi lína, fjöldi dálka cntInputRows = InputRng.Rows.Count cntInntaks .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'undirbúa fylkið finna/skipta út fyrir íFind1RReplace cntFindRows iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Leita og skipta út á upprunasviðinu For iInput1To curRow Fort =Input1To curRow i 1 Til cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Að skipta út öllum finna/skipta út pörum í hverjum reit Fyrir iFindCurRow = 1 To cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1)Replace(iFindCurRow, 1,R)SearchReplace), (iInputCurRow, iInputCurCol) = sTmp Næsta Næsta MassReplace = arRes LokaaðgerðEins og LAMBDA skilgreindar aðgerðir eru UDFs allt yfir vinnubókina . Það þýðir að