Excel: poiščite in zamenjajte več vrednosti hkrati

  • Deliti To
Michael Brown

V tem vodniku si bomo ogledali več načinov iskanja in zamenjave več besed, nizov ali posameznih znakov, da boste lahko izbrali tistega, ki najbolj ustreza vašim potrebam.

Kako ljudje običajno iščejo v Excelu? Večinoma z uporabo funkcije Poišči in zamenjaj, ki dobro deluje za posamezne vrednosti. Kaj pa, če morate zamenjati deset ali celo sto elementov? Zagotovo nihče ne bi želel ročno opraviti vseh teh zamenjav po enih in nato vse znova, ko se podatki spremenijo. Na srečo obstaja nekaj učinkovitejših metod za množično zamenjavo v Excelu, in sicervsako od njih bomo podrobno raziskali.

    Iskanje in nadomeščanje več vrednosti z vgnezdenim SUBSTITUTE

    Najlažji način iskanja in zamenjave več vnosov v Excelu je uporaba funkcije SUBSTITUTE.

    Logika formule je zelo preprosta: napišete nekaj posameznih funkcij za zamenjavo stare vrednosti z novo. Nato te funkcije vgradite eno v drugo, tako da vsaka naslednja funkcija SUBSTITUTE uporabi rezultat prejšnje funkcije SUBSTITUTE za iskanje naslednje vrednosti.

    SUBSTITUT(SUBSTITUT(SUBSTITUT( besedilo , old_text1 , new_text1 ), old_text2 , new_text2 ), old_text3 , new_text3 )

    Predpostavimo, da želite na seznamu lokacij v A2:A10 zamenjati skrajšana imena držav (kot so FR , ZDRUŽENO KRALJESTVO in . ZDA ) s polnimi imeni.

    Če želite to narediti, vnesite stare vrednosti v D2:D4 in nove vrednosti v E2:E4, kot je prikazano na spodnji sliki zaslona. Nato vnesite spodnjo formulo v B2 in pritisnite Enter:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)

    ...in vse zamenjave bodo opravljene naenkrat:

    Upoštevajte, da zgornji pristop deluje le v Excel 365 ki podpira dinamična polja.

    V preddinamičnih različicah programov Excel 2019, Excel 2016 in prejšnjih je treba formulo napisati za najvišjo celico (B2) in jo nato kopirati v spodnje celice:

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)

    Bodite pozorni, da v tem primeru nadomestne vrednosti zaklenemo z absolutnimi referencami na celice, tako da se pri kopiranju formule navzdol ne premaknejo.

    Opomba: Funkcija SUBSTITUTE je , ki upošteva velike in male črke. , kar pomeni, da morate vnesti stare vrednosti ( old_text ) v enaki velikosti črk, kot so navedene v izvirnih podatkih.

    Čeprav je ta metoda preprosta, ima pomembno pomanjkljivost - ko je treba zamenjati več deset elementov, postane upravljanje ugnezdenih funkcij precej težavno.

    Prednosti : enostaven za izvajanje; podprt v vseh različicah programa Excel

    Pomanjkljivosti : najbolje se uporablja za omejeno število vrednosti poišči/zamenjaj

    Iskanje in zamenjava več vnosov s funkcijo XLOOKUP

    V primeru, da želite zamenjati celotna vsebina celice , ne njegov del, je funkcija XLOOKUP zelo uporabna.

    Recimo, da imate seznam držav v stolpcu A in želite vse kratice nadomestiti z ustreznimi polnimi imeni. Tako kot v prejšnjem primeru najprej vnesite elementa "Poišči" in "Nadomesti" v ločena stolpca (D oziroma E), nato pa vnesite to formulo v B2:

    =XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)

    Prevedeno iz jezika programa Excel v človeški jezik, formula naredi naslednje:

    Vrednost A2 (lookup_value) poiščite v D2:D4 (lookup_array) in vrnite ujemanje iz E2:E4 (return_array). Če je ne najdete, izberite izvirno vrednost iz A2.

    Z dvoklikom na ročaj za zapolnitev se formula kopira v spodnje celice, rezultat pa vas ne bo pustil čakati:

    Ker je funkcija XLOOKUP na voljo samo v Excelu 365, zgornja formula ne bo delovala v prejšnjih različicah. Vendar lahko to obnašanje zlahka posnemate s kombinacijo IFERROR ali IFNA in VLOOKUP:

    =IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)

    Opomba: Za razliko od funkcije SUBSTITUTE sta funkciji XLOOKUP in VLOOKUP ni občutljivo na velikost črk , kar pomeni, da iščejo iskalne vrednosti, pri čemer ne upoštevajo velikosti črk. Naša formula bi na primer zamenjala obe FR in . fr s spletno stranjo . Francija .

    Prednosti : nenavadna uporaba običajnih funkcij; deluje v vseh različicah programa Excel

    Pomanjkljivosti : deluje na ravni celice, ne more nadomestiti dela vsebine celice

    Večkratno nadomeščanje z rekurzivno funkcijo LAMBDA

    Za naročnike programa Microsoft 365 je v Excelu na voljo posebna funkcija, ki omogoča ustvarjanje funkcij po meri z uporabo tradicionalnega jezika formul. Ja, govorim o LAMBDA. Lepota te metode je, da lahko zelo dolgo in zapleteno formulo pretvori v zelo kompaktno in preprosto. Poleg tega omogoča ustvarjanje lastnih funkcij, ki v Excelu ne obstajajo, kar je bilo predmogoče le s programom VBA.

    Za podrobne informacije o ustvarjanju in uporabi funkcij LAMBDA po meri si oglejte to navodilo: Kako napisati funkcije LAMBDA v Excelu. Tukaj bomo obravnavali nekaj praktičnih primerov.

    Prednosti : rezultat je elegantna in neverjetno preprosta za uporabo funkcija, ne glede na število nadomestnih parov

    Pomanjkljivosti : na voljo samo v Excelu 365; specifično za delovni zvezek in ga ni mogoče ponovno uporabiti v različnih delovnih zvezkih

    Primer 1. Iskanje in zamenjava več besed/navzkrižnih nizov naenkrat

    Za zamenjavo več besed ali besedila v enem koraku smo ustvarili funkcijo LAMBDA po meri z imenom MultiReplace , ki ima lahko eno od teh oblik:

    =LAMBDA(besedilo, staro, novo, IF(staro"", MultiReplace(SUBSTITUTE(besedilo, staro, novo), OFFSET(staro, 1, 0), OFFSET(novo, 1, 0)), besedilo))

    Ali

    =LAMBDA(besedilo, staro, novo, IF(old="", besedilo, MultiReplace(SUBSTITUTE(besedilo, staro, novo), OFFSET(staro, 1, 0), OFFSET(novo, 1, 0))))

    Obe sta rekurzivni funkciji, ki kličeta sami sebe. Razlika je le v načinu določanja izhodne točke.

    V prvi formuli funkcija IF preveri, ali stari seznam ni prazen (old""). Če je TRUE, se MultiReplace Če je funkcija FALSE, vrne besedilo v trenutni obliki in se zaključi.

    Druga formula uporablja obratno logiko: če stari je prazen (old=""), potem vrnite besedilo in izstopite; v nasprotnem primeru pokličite MultiReplace .

    Najzahtevnejši del je opravljen! Ostane vam še, da poimenujete MultiReplace funkcijo v upravitelju imen, kot je prikazano na spodnji sliki zaslona. Za podrobna navodila glejte Kako poimenovati funkcijo LAMBDA.

    Ko funkcija dobi ime, jo lahko uporabljate tako kot katero koli drugo vgrajeno funkcijo.

    Ne glede na to, katero od obeh različic formule izberete, je sintaksa z vidika končnega uporabnika preprosta:

    MultiReplace(besedilo, staro, novo)

    Kje:

    • Besedilo - izvorni podatki
    • Stari - vrednosti za iskanje
    • Novo - vrednosti, ki jih je treba nadomestiti z

    Če nadaljujemo prejšnji primer, zamenjajmo ne le kratice držav, temveč tudi kratice držav. V ta namen vnesite kratice ( stari vrednosti) v stolpcu D z začetkom v D2 in polna imena ( novo vrednosti) v stolpcu E z začetkom v E2.

    V oknu B2 vnesite funkcijo MultiReplace:

    =MultiReplace(A2:A10, D2, E2)

    Pritisnite Enter in uživajte v rezultatih :)

    Kako deluje ta formula

    Ključ do razumevanja formule je razumevanje rekurzije. Morda se sliši zapleteno, vendar je načelo zelo preprosto. Z vsako iteracijo rekurzivna funkcija reši en majhen primer večjega problema. V našem primeru je rekurzivna funkcija MultiReplace funkcija v zanki pregleda stare in nove vrednosti ter v vsaki zanki izvede eno zamenjavo:

    MultiReplace (SUBSTITUTE(besedilo, staro, novo), OFFSET(staro, 1, 0), OFFSET(novo, 1, 0))

    Kot pri vgnezdenih funkcijah SUBSTITUTE postane rezultat prejšnje funkcije SUBSTITUTE besedilo parameter za naslednji SUBSTITUTE. Z drugimi besedami, pri vsakem naslednjem klicu MultiReplace , funkcija SUBSTITUTE ne obdeluje izvirnega besedilnega niza, temveč rezultat prejšnjega klica.

    Če želite obdelati vse elemente v stari začnemo z najvišjo celico in se s funkcijo OFFSET z vsako interakcijo premaknemo za 1 vrstico navzdol:

    OFFSET(old, 1, 0)

    Enako velja za novo seznam:

    OFFSET(novo, 1, 0)

    Bistveno je, da zagotovite točka izstopa da bi preprečili, da bi se rekurzivni klici nadaljevali v nedogled. To se izvede s pomočjo funkcije IF - če je stari celica je prazna, funkcija vrne besedilo sedanjo obliko in izhode:

    =LAMBDA(besedilo, staro, novo, IF(old="", besedilo, MultiReplace(...)))

    ali

    =LAMBDA(besedilo, staro, novo, IF(staro"", MultiReplace(...), besedilo))

    Primer 2. Zamenjava več znakov v programu Excel

    Načeloma je MultiReplace ki je bila obravnavana v prejšnjem primeru, lahko obdeluje tudi posamezne znake, če je vsak stari in novi znak vnesen v ločeno celico, tako kot skrajšana in polna imena na zgornjih slikah zaslona.

    Če bi raje vnesli stare znake v eno celico in nove znake v drugo celico ali jih vnesli neposredno v formulo, lahko ustvarite drugo funkcijo po meri z imenom ZamenjajZnake z uporabo ene od teh formul:

    =LAMBDA(besedilo, stari_znaki, novi_znaki, IF(stari_znaki"", ReplaceChars(SUBSTITUTE(besedilo, LEFT(stari_znaki), LEFT(novi_znaki)), RIGHT(stari_znaki, LEN(stari_znaki)-1), RIGHT(novi_znaki, LEN(novi_znaki)-1)), besedilo)))

    Ali

    =LAMBDA(besedilo, stari_znaki, novi_znaki, IF(stari_znaki="", besedilo, ReplaceChars(SUBSTITUTE(besedilo, LEFT(stari_znaki), LEFT(novi_znaki)), RIGHT(stari_znaki, LEN(stari_znaki)-1), RIGHT(novi_znaki, LEN(novi_znaki)-1))))

    Ne pozabite poimenovati svoje nove funkcije Lambda v Upravitelju imen kot običajno:

    Vaša nova funkcija po meri je pripravljena za uporabo:

    ReplaceChars(besedilo, old_chars, new_chars)

    Kje:

    • Besedilo - izvirne nize
    • Stari - znakov, ki jih želite poiskati.
    • Novo - znakov, ki jih želite nadomestiti z

    Da bi jo preizkusili na terenu, naredimo nekaj, kar se pogosto izvaja pri uvoženih podatkih - pametne narekovaje in pametne apostrofe nadomestimo z ravnimi narekovaji in ravnimi apostrofi.

    Najprej vnesemo pametne narekovaje in pametni apostrof v D2, ravne narekovaje in ravni apostrof pa v E2, pri čemer znake zaradi boljše berljivosti ločimo s presledki. (Ker v obeh celicah uporabljamo isti ločilnik, to ne bo vplivalo na rezultat - Excel bo samo nadomestil presledek s presledkom.)

    Nato to formulo vnesemo v B2:

    =Zamenjaj znake(A2:A4, D2, E2)

    In dobili natanko takšne rezultate, kot smo jih iskali:

    Znake lahko vnesete tudi neposredno v formulo. V našem primeru ne pozabite "podvojiti" ravnih narekovajev na naslednji način:

    =Zamenjaj znake(A2:A4, "" " '", """ "" "" '")

    Kako deluje ta formula

    Spletna stran ZamenjajZnake Funkcija ciklično preleti old_chars in . new_chars nizov in izvede zamenjavo po enega znaka naenkrat, začenši s prvim znakom na levi. Ta del opravi funkcija SUBSTITUTE:

    SUBSTITUTE(besedilo, LEFT(stari_znaki), LEFT(novi_znaki))

    Z vsako iteracijo funkcija RIGHT odstrani en znak z leve strani obeh old_chars in . new_chars nizov, tako da lahko LEFT pridobi naslednji par znakov za zamenjavo:

    ReplaceChars(SUBSTITUTE(besedilo, LEFT(stari_znaki), LEFT(novi_znaki)), RIGHT(stari_znaki, LEN(stari_znaki)-1), RIGHT(novi_znaki, LEN(novi_znaki)-1))

    Funkcija IF pred vsakim rekurzivnim klicem oceni old_chars Če ni prazen, funkcija pokliče samo sebe. Takoj ko je bil zamenjan zadnji znak, se postopek iteracije konča, formula vrne besedilo sedanjo obliko in izhode.

    Opomba: Ker je funkcija SUBSTITUTE, ki se uporablja v naših osnovnih formulah. , ki upošteva velike in male črke. , obe lambdi ( MultiReplace in . ZamenjajZnake ) obravnavajo velike in male črke kot različne znake.

    Množično iskanje in nadomeščanje z UDF

    Če funkcija LAMBDA v Excelu ni na voljo, lahko uporabniško definirano funkcijo za večkratno zamenjavo napišete na običajen način z uporabo VBA.

    Za razlikovanje med UDF in LAMBDA-definiranim MultiReplace funkcijo poimenujemo drugače, na primer MassReplace Koda funkcije je naslednja:

    Funkcija MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () Dim arRes() As Variant 'polje za shranjevanje rezultatov Dim arSearchReplace(), sTmp As String 'polje za shranjevanje parov find/replace, začasni niz Dim iFindCurRow, cntFindRows As Long 'indeks trenutne vrstice polja SearchReplace, število vrstic Dim iInputCurRow, iInputCurCol, cntInputRows,cntInputCols As Long 'indeks trenutne vrstice v izvornem območju, indeks trenutnega stolpca v izvornem območju, število vrstic, število stolpcev cntInputRows = InputRng.Rows.Count cntInputCols = InputRng.Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'priprava polja parov find/replace ForiFindCurRow = 1 Do cntFindRows arSearchReplace(iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Iskanje in nadomeščanje v izvornem območju For iInputCurRow = 1 Do cntInputRows For iInputCurCol = 1 Do cntInputCols sTmp = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Zamenjava vseh dvojic find/replace v vsaki celiciZa iFindCurRow = 1 Do cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace(iFindCurRow, 2)) Naslednji arRes(iInputCurRow, iInputCurCol) = sTmp Naslednji Naslednji MassReplace = arRes Konec funkcije

    Tako kot funkcije, opredeljene v programu LAMBDA, so tudi UDF v celotnem delovnem zvezku To pomeni, da je MassReplace funkcija bo delovala samo v delovnem zvezku, v katerega ste vstavili kodo. Če niste prepričani, kako to narediti pravilno, sledite korakom, opisanim v poglavju Kako vstaviti kodo VBA v Excel.

    Ko kodo dodate v delovni zvezek, se bo funkcija prikazala v intellisense formule - samo ime funkcije, ne pa tudi argumentov! Čeprav menim, da si ni treba zapomniti sintakse:

    MassReplace(vhodni_razpon, find_range, replace_range)

    Kje:

    • Input_range - izvorno območje, v katerem želite zamenjati vrednosti.
    • Find_range - znakov, nizov ali besed, ki jih želite poiskati.
    • Nadomestiti_območje - znakov, nizov ali besed, ki jih želite nadomestiti.

    V Excelu 365 zaradi podpore dinamičnim nizom deluje kot običajna formula, ki jo je treba vnesti le v zgornjo celico (B2):

    =MassReplace(A2:A10, D2:D4, E2:E4)

    V preddinamičnem Excelu to deluje kot stara formula CSE: izberete celotno izvorno območje (B2:B10), vnesete formulo in hkrati pritisnete tipki Ctrl + Shift + Enter, da jo dokončate.

    Prednosti : dostojna alternativa funkciji LAMBDA po meri v Excelu 2019, Excelu 2016 in prejšnjih različicah

    Pomanjkljivosti : delovni zvezek mora biti shranjen kot datoteka .xlsm z omogočenimi makri

    Množična zamenjava v Excelu z makrom VBA

    Če radi avtomatizirate običajna opravila z makri, lahko uporabite naslednjo kodo VBA za iskanje in zamenjavo več vrednosti v območju.

    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 ThenApplication.ScreenUpdating = False Za vsak Rng v ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End Sub

    Če želite makro uporabiti takoj, lahko prenesete naš vzorčni delovni zvezek, ki vsebuje kodo. Lahko pa kodo vstavite v svoj delovni zvezek.

    Kako uporabljati makro

    Preden zaženete makro, vnesite stare in nove vrednosti v dva sosednja stolpca, kot je prikazano na spodnji sliki (C2:D4).

    Nato izberite izvorne podatke, pritisnite kombinacijo tipk Alt + F8, izberite BulkReplace in kliknite Spustite .

    Kot vir besa je predizbrana, preverite referenco in kliknite V redu:

    Nato izberite zamenjava obsega in kliknite V redu:

    Končano!

    Prednosti : nastavite enkrat, uporabite kadar koli

    Pomanjkljivosti : makro je treba zagnati ob vsaki spremembi podatkov

    Večkratno iskanje in nadomeščanje v Excelu z orodjem Substring

    V prvem primeru sem omenil, da je vgnezdeni SUBSTITUTE najlažji način zamenjave več vrednosti v Excelu. Priznam, da sem se motil. Z našim kompletom Ultimate Suite je vse še lažje!

    Če želite opraviti množično zamenjavo v delovnem listu, pojdite v Podatke o abilitah in kliknite zavihek Orodja za podrejanje nizov > Nadomeščanje podniteljev .

    Spletna stran Nadomeščanje podniteljev Pojavilo se bo pogovorno okno, v katerem boste morali določiti Vir: obseg in Podstringi obseg.

    Ko sta izbrana oba razpona, kliknite Zamenjava in poiščite rezultate v novem stolpcu, vstavljenem desno od prvotnih podatkov. Ja, tako preprosto je!

    Nasvet. Pred klikom na Zamenjava , morate upoštevati še eno pomembno stvar - Občutljivost na velike in male črke Če želite velike in male črke obravnavati kot različne znake, to možnost označite. V tem primeru to možnost označimo, ker želimo zamenjati samo niz z velikimi črkami, podrezi, kot so "fr", "uk" ali "ak" znotraj drugih besed, pa ostanejo nedotaknjeni.

    Če vas zanima, katere druge množične operacije lahko izvedete z nizi, si oglejte druga orodja za nizove, ki so vključena v naš paket Ultimate Suite. Ali še bolje, prenesite spodnjo preizkusno različico in jo preizkusite!

    To je način iskanja in zamenjave več besed in znakov hkrati v programu Excel. Zahvaljujem se vam za branje in upam, da se naslednji teden vidimo na našem blogu!

    Razpoložljivi prenosi

    Večkratno iskanje in nadomeščanje v Excelu (.xlsm datoteka)

    Ultimate Suite 14-dnevna popolnoma funkcionalna različica (.exe datoteka)

    Michael Brown je predan tehnološki navdušenec s strastjo do poenostavljanja kompleksnih procesov z uporabo programskih orodij. Z več kot desetletnimi izkušnjami v tehnološki industriji je svoje veščine izpopolnil v Microsoft Excelu in Outlooku ter Google Preglednicah in Dokumentih. Michaelov blog je namenjen deljenju svojega znanja in strokovnega znanja z drugimi ter ponuja preproste nasvete in vadnice za izboljšanje produktivnosti in učinkovitosti. Ne glede na to, ali ste izkušen strokovnjak ali začetnik, Michaelov blog ponuja dragocene vpoglede in praktične nasvete, kako kar najbolje izkoristiti ta osnovna programska orodja.