Excel: trovu kaj anstataŭigu plurajn valorojn samtempe

  • Kundividu Ĉi Tion
Michael Brown

En ĉi tiu lernilo, ni rigardos plurajn manierojn trovi kaj anstataŭigi plurajn vortojn, ŝnurojn aŭ individuajn signojn, por ke vi povu elekti tiun, kiu plej taŭgas por viaj bezonoj.

Kiel homoj kutime serĉas en Excel? Plejparte, uzante la Trovu & Anstataŭigi funkcion, kiu funkcias bone por unuopaj valoroj. Sed kio se vi havas dekojn aŭ eĉ centojn da aĵoj por anstataŭigi? Verŝajne, neniu volus fari ĉiujn tiujn anstataŭaĵojn permane unuope, kaj poste fari ĝin denove kiam la datumoj ŝanĝiĝas. Feliĉe, ekzistas kelkaj pli efikaj metodoj por fari amasan anstataŭigon en Excel, kaj ni esploros ĉiun el ili detale.

    Trovu kaj anstataŭigi multoblajn valorojn per nestita SUBSTITUTE

    La plej facila maniero trovi kaj anstataŭigi plurajn enskribojn en Excel estas uzi la funkcion SUBSTITUTE.

    La logiko de la formulo estas tre simpla: vi skribas kelkajn individuajn funkciojn por anstataŭigi malnovan valoron per nova. . Kaj tiam, vi nestu tiujn funkciojn unu en la alian, tiel ke ĉiu posta SUBSTITUTO uzas la eligon de la antaŭa SUBSTITUTO por serĉi la sekvan valoron.

    SUBSTITUTE(SUBSTITUTE( teksto, malnova_teksto1, nova_teksto1), malnova_teksto2, nova_teksto2), malnova_teksto3, nova_teksto3)

    En la listo de lokoj en A2:A10, supozu, ke vi volas anstataŭigi la mallongigitajn landnomojn (kiel FR , UK kaj Usono ) per plenajLa funkcio MassReplace funkcios nur en la laborlibro, en kiu vi enigis la kodon. Se vi ne certas kiel fari tion ĝuste, bonvolu sekvi la paŝojn priskribitajn en Kiel enmeti VBA-kodon en Excel.

    Post kiam la kodo estas aldonita al via laborlibro, la funkcio aperos en la formulo intellisense - nur la nomo de la funkcio, ne la argumentoj! Tamen, mi kredas, ke ne gravas memori la sintakson:

    MassReplace(input_range, find_range, replace_range)

    Kie:

    • Input_range - la fonta gamo kie vi volas anstataŭigi valorojn.
    • Trovi_gamon - la signojn, ĉenojn aŭ vortojn por serĉi.
    • Anstataŭigi_gamon - la signojn, ĉenojn, aŭ vortoj por anstataŭigi.

    En Excel 365, pro subteno por dinamikaj tabeloj, ĉi tio funkcias kiel normala formulo, kiu nur bezonas esti enigita en la supra ĉelo (B2):

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

    En antaŭdinamika Excel, ĉi tio funkcias kiel malnovstila CSE-tabelformulo: vi elektas la tutan fontan gamon (B2:B10), tajpu la formulo, kaj premu la klavojn Ctrl + Shift + Enigu samtempe por kompletigi ĝin.

    Avantaĝoj : deca alternativo al kutima LAMBDA-funkcio en Excel 2019 , Excel 2016 kaj pli fruaj versioj

    Malavantaĝoj : la laborlibro devas esti konservita kiel makro-ebligita .xlsm-dosiero

    Poka anstataŭigo en Excel per VBA-makro

    Se vi amas aŭtomobilon kunligi oftajn taskojn kun makrooj, tiam vipovas uzi la sekvan VBA-kodon por trovi kaj anstataŭigi plurajn valorojn en gamo.

    Sub BulkReplace() Dim Rng As Range, SourceRng As Range, ReplaceRng As Range On Error Resume Next Set SourceRng = Application.InputBox( "Fontodatenoj: " , "Vulk Anstataŭigi" , Application.Selection.Address, Type :=8) Err.Clear If Not SourceRng Is Nothing Then Set ReplaceRng = Application.InputBox( "Anstataŭigi intervalon:" , "Vulk Replace" , Type :=8) Err.Clear Se Ne ReplaceRng Estas Nenio Tiam Apliko.ScreenUpdating = Falsa Por Ĉiu Rng En ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, anstataŭigo:=Rng.Offset (0, 1).Valo Sekva Application.ScreenUpdating = True End If End If End Sub

    Por uzi la makroon tuj, vi povas elŝuti nian ekzemplan laborlibron enhavantan la kodon. Aŭ vi povas enmeti la kodon en vian propran laborlibron.

    Kiel uzi la makroon

    Antaŭ ol ruli la makroon, tajpu la malnovajn kaj novajn valorojn en du apudajn kolumnojn kiel montrite en la suba bildo ( C2:D4).

    Kaj tiam elektu viajn fontajn datumojn, premu Alt + F8 , elektu la makroon BulkReplace kaj alklaku Run .

    Dum la fonto furiozo estas antaŭelektita, simple kontrolu la referencon, kaj alklaku OK:

    Post tio, elektu la anstataŭigi intervalon , kaj alklaku OK:

    Fine!

    Avantaĝoj : agordu unufoje, reuzu iam ajn

    Malavantaĝoj : la makroo devas esti rulita kun ĉiuj datumojŝanĝi

    Multobla trovi kaj anstataŭigi en Excel per Substring-ilo

    En la unua ekzemplo, mi menciis, ke nestita SUBSTITUTO estas la plej facila maniero anstataŭigi plurajn valorojn en Excel. Mi konfesas, ke mi eraris. Nia Ultimate Suite faciligas la aferojn!

    Por fari amasan anstataŭigon en via laborfolio, iru al la langeto Ablebits Data kaj alklaku Subŝnuraj Iloj > Anstataŭigi Subŝnurojn .

    La dialogujo Anstataŭigi Subŝnurojn aperos petante vin difini la Fonto gamon kaj Subŝnuroj gamo.

    Kun la du gamoj elektitaj, alklaku la Anstataŭigi butonon kaj trovu la rezultojn en nova kolumno enmetita dekstre. de la originaj datumoj. Jes, tiel facilas!

    Konsileto. Antaŭ klaki Anstataŭigi , estas unu grava afero por vi pripensi - la Majuskkle-distinga skatolo. Nepre elektu ĝin se vi volas trakti la majusklojn kaj minusklojn kiel malsamajn signojn. En ĉi tiu ekzemplo, ni markas ĉi tiun opcion ĉar ni volas nur anstataŭigi la majusklojn kaj lasi la subŝnurojn kiel "fr", "uk", aŭ "ak" ene de aliaj vortoj nerompitaj.

    Se vi scivolas scii, kiaj aliaj amasaj operacioj povas esti faritaj sur ŝnuroj, kontrolu aliajn Subŝnurajn Ilojn inkluzivitajn kun nia Ultimate Suite. Aŭ eĉ pli bone, elŝutu la taksan version sube kaj provu ĝin!

    Tiel trovi kaj anstataŭigipluraj vortoj kaj signoj samtempe en Excel. Mi dankas vin pro legado kaj esperas vidi vin en nia blogo venontsemajne!

    Haveblaj elŝutoj

    Multoblaj trovi kaj anstataŭi en Excel (.xlsm-dosiero)

    Ultimate Suite 14 -taga plenfunkcia versio (.exe dosiero)

    nomoj.

    Por fari ĝin, enigu la malnovajn valorojn en D2:D4 kaj la novajn valorojn en E2:E4 kiel montrite en la ekrankopio sube. Kaj poste, metu la suban formulon en B2 kaj premu Enigu:

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

    ...kaj vi havos ĉiujn anstataŭaĵojn faritaj samtempe:

    Bonvolu noti, ke ĉi-supra aliro funkcias nur en Excel 365 kiu subtenas dinamikajn tabelojn.

    En antaŭ-dinamikaj versioj de Excel 2019, Excel 2016 kaj pli frue, la formulo devas esti skribita por la plej supra ĉelo (B2), kaj poste kopiita al la subaj ĉeloj:

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

    Bonvolu atenti, ke, en ĉi tiu kazo, ni ŝlosas la anstataŭajn valorojn per absolutaj ĉelaj referencoj, do ili ne movos kiam oni kopias la formulon malsupren.

    Notu. La SUBSTITUTE-funkcio estas majuskle-distinga , tio signifas, ke vi devus tajpi la malnovajn valorojn ( malnova_teksto ) en la sama litermajskleco kiel ili aperas en la originaj datumoj.

    Kiel ajn facila, ĉi tiu metodo havas gravan malavantaĝon - kiam vi havas dekojn da aĵoj por anstataŭigi, nestitaj funkcioj fariĝas sufiĉe malfacile administreblaj.

    Avantaĝoj : facila -efektivigi; subtenata en ĉiuj Excel-versioj

    Malavantaĝoj : plej bone por esti uzata por limigita nombro da trovi/anstataŭigi valorojn

    Serĉi kaj anstataŭigi plurajn enskribojn per XLOOKUP

    En situacio, kiam vi serĉas anstataŭigi la tutan ĉelan enhavon , ne ĝian parton, la funkcio XLOOKUP utilas.

    Ni iru.diru, ke vi havas liston de landoj en kolumno A kaj celas anstataŭigi ĉiujn mallongigojn per la respondaj plenaj nomoj. Kiel en la antaŭa ekzemplo, vi komencas enigi la erojn "Trovu" kaj "Anstataŭigi" en apartaj kolumnoj (D kaj E respektive), kaj poste enigu ĉi tiun formulon en B2:

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

    Tradukita el la Excel-lingvo en la homan lingvon, jen kion faras la formulo:

    Serĉu la A2-valoron (serĉo_valoro) en D2:D4 (lookup_array) kaj redonu kongruon de E2:E4 (return_array). Se ne trovite, tiru la originalan valoron el A2.

    Duble alklaku la plenigan tenilon por kopii la formulon al la subaj ĉeloj, kaj la rezulto ne atendos vin:

    Ĉar la funkcio XLOOKUP disponeblas nur en Excel 365, la supra formulo ne funkcios en pli fruaj versioj. Tamen, vi povas facile imiti ĉi tiun konduton kun kombinaĵo de IFERROR aŭ IFNA kaj VLOOKUP:

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

    Noto. Male al SUBSTITUTE, la funkcioj XLOOKUP kaj VLOOKUP ne distingas majusklojn , kio signifas, ke ili serĉas la serĉajn valorojn ignorante la liter-minuskon. Ekzemple, nia formulo anstataŭigus ambaŭ FR kaj fr per Francio .

    Avantaĝoj : nekutima uzo de kutimaj funkcioj; funkcias en ĉiuj Excel-versioj

    Malavantaĝoj : funkcias ĉe ĉela nivelo, ne povas anstataŭigi parton de la ĉelenhavo

    Multobla anstataŭigo uzante rekursivan LAMBDA-funkcion

    Por Microsoft365 abonantoj, Excel provizas specialan funkcion, kiu permesas krei kutimajn funkciojn uzante tradician formullingvon. Jes, mi parolas pri LAMBDA. La beleco de ĉi tiu metodo estas, ke ĝi povas konverti tre longan kaj kompleksan formulon en tre kompaktan kaj simplan. Krome, ĝi ebligas al vi krei viajn proprajn funkciojn, kiuj ne ekzistas en Excel, kio antaŭe estis ebla nur kun VBA.

    Por la detalaj informoj pri kreado kaj uzado de kutimaj LAMBDA-funkcioj, bonvolu kontroli ĉi tiun lernilon: Kiel por skribi LAMBDA-funkciojn en Excel. Ĉi tie, ni diskutos kelkajn praktikajn ekzemplojn.

    Avantaĝoj : la rezulto estas eleganta kaj mirinde simpla uzebla funkcio, negrave la nombro da anstataŭaj paroj

    Malavantaĝoj : disponebla nur en Excel 365; specifa laborlibro kaj ne povas esti reuzata tra malsamaj laborlibroj

    Ekzemplo 1. Serĉu kaj anstataŭigu plurajn vortojn/ŝnurojn samtempe

    Por anstataŭigi plurajn vortojn aŭ tekston unufoje, ni kreis kutimon LAMBDA-funkcio, nomita MultiReplace , kiu povas preni unu el ĉi tiuj formoj:

    =LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))

    Ambaŭ estas rekursivaj funkcioj kiuj nomas sin. La diferenco estas nur en kiel la elirpunkto estas establita.

    En la unua formulo, la funkcio IF kontrolas ĉu la malnova listo ne estas malplena (malnova ""). Se VERA, la funkcio MultiReplace estas vokita. Se FALSA, la funkcioredonas tekston al ĝi sian nunan formon kaj eliras.

    La dua formulo uzas la inversan logikon: se malnova estas malplena (malnova=""), tiam redonas teksto kaj eliro; alie voku MultiReplace .

    La plej malfacila parto estas plenumita! Restas al vi nomi la funkcion MultiReplace en la Nomadministrilo kiel montrite en la suba ekrankopio. Por la detalaj gvidlinioj, bonvolu vidi Kiel nomi LAMBDA-funkcion.

    Iam la funkcio ricevas nomon, vi povas uzi ĝin same kiel ajnan alian enkonstruitan funkcion.

    Kiu ajn el la du formulvarioj vi elektas, el la perspektivo de la finuzanto, la sintakso estas tiel simpla kiel ĉi tio:

    Multanstataŭigi(teksto, malnova, nova)

    Kie:

    • Teksto - la fontodatumoj
    • Malnova - la valoroj por trovi
    • Nova - la valoroj por anstataŭigi per

    Iom pluen la antaŭan ekzemplon, ni anstataŭigu ne nur la landajn mallongigojn sed ankaŭ la ŝtatajn mallongigojn. Por tio, tajpu la mallongigojn ( malnovaj valoroj) en kolumno D komencante en D2 kaj la plenajn nomojn ( novaj valoroj) en kolumno E komencante en E2.

    En B2, enigu la funkcion MultiReplace:

    =MultiReplace(A2:A10, D2, E2)

    Premu Enigu kaj ĝuu la rezultojn :)

    Kiel ĉi tiu formulo funkcias

    La indico por kompreni la formulon estas kompreni rikurson. Ĉi tio povas soni komplika, sed la principo estas sufiĉe simpla. Kun ĉiuripeto, rekursiva funkcio solvas unu malgrandan okazon de pli granda problemo. En nia kazo, la funkcio MultiReplace cirkulas tra la malnovaj kaj novaj valoroj kaj, kun ĉiu buklo, faras unu anstataŭaĵon:

    MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))

    Kiel ĉe nestitaj SUBSTITUTO-funkcioj, la rezulto de la antaŭa SUBSTITUTO iĝas la teksto parametro por la sekva SUBSTITUTO. Alivorte, ĉe ĉiu posta alvoko de MultiReplace , la SUBSTITUTE-funkcio prilaboras ne la originan tekstoĉenon, sed la eligon de la antaŭa alvoko.

    Por pritrakti ĉiujn erojn sur la malnova listo, ni komencas per la plej supra ĉelo, kaj uzas la funkcion OFFSET por movi 1 vicon malsupren kun ĉiu interago:

    OFFSET(old, 1, 0)

    La sama estas farita por la nova listo:

    OFFSET(new, 1, 0)

    La kerna afero estas provizi elirejon por malhelpi rekursiajn vokojn por ĉiam. Ĝi estas farita helpe de la funkcio SE - se la malnova ĉelo estas malplena, la funkcio redonas al teksto sian nunan formon kaj eliras:

    =LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))

    =LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))

    Ekzemplo 2. Anstataŭigi plurajn signojn en Excel

    Principe, la funkcio MultiReplace diskutita en la antaŭa ekzemplo povas manipuli ankaŭ unuopaj signoj, kondiĉe ke ĉiu malnova kaj nova signo estas enmetita en aparta ĉelo, ekzakte kiel la mallongigitaj kaj plenaj nomoj en la supraj ekrankopioj.

    Se vi preferas enigi la malnovansignoj en unu ĉelo kaj la novaj signoj en alia ĉelo, aŭ tajpu ilin rekte en la formulo, tiam vi povas krei alian kutiman funkcion, nomitan Anstataŭsignoj , uzante unu el ĉi tiuj formuloj:

    =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))

    =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))))

    Memoru nomi vian novan Lambda funkcion en la Nomadministrilo kiel kutime:

    Kaj via nova kutima funkcio estas preta por uzo:

    ReplaceChars(text, old_chars, new_chars)

    Kie:

    • Text - la originalaj ĉenoj
    • Malnova - la signoj por serĉi
    • Nova - la signoj por anstataŭigi per

    Por doni al ĝi kampteston, ni faru ion, kio estas ofte farita sur importitaj datumoj - anstataŭigu inteligentajn citaĵojn kaj inteligentajn apostrofojn per rektaj citaĵoj kaj rektaj apostrofoj.

    Unue, ni enigas la inteligentajn citaĵojn kaj inteligentajn apostrofon en D2, rektajn citaĵojn kaj rektajn apostrofon en E2. , apartigante la signojn per spacoj por pli bona legebleco. (Ĉar ni uzas la saman limigilon en ambaŭ ĉeloj, ĝi ne havos ajnan efikon al la rezulto - Excel simple anstataŭigos spacon per spaco.)

    Post tio, ni enmetas ĉi tiun formulon en B2:

    =ReplaceChars(A2:A4, D2, E2)

    Kaj ricevu ĝuste la rezultojn, kiujn ni serĉis:

    Eblas ankaŭ tajpi la signojn rekte en la formulo. En nia kazo, nur memoru "dupliki" la rektajn citaĵojn jene:

    =ReplaceChars(A2:A4, "“ ” ’", """ "" '")

    Kiel ĉi tiu formulo funkcias

    La ReplaceChars funkcio cirkulas tra la ĉenoj old_chars kaj new_chars kaj faras po unu anstataŭaĵon komencante de la unua signo maldekstre. Ĉi tiu parto estas farita per la SUBSTITUTE-funkcio:

    SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))

    Kun ĉiu ripeto, la RIGHT-funkcio forprenas unu signon de la maldekstro de kaj la malnovaj_signoj kaj new_chars -ĉenoj, tiel ke LEFT povus preni la sekvan paron da signoj por anstataŭigo:

    ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))

    Antaŭ ĉiu rekursiva voko, la IF-funkcio taksas la old_chars -ĉenon . Se ĝi ne estas malplena, la funkcio nomas sin. Tuj kiam la lasta signo estas anstataŭigita, la ripeta procezo finiĝas, la formulo redonas tekston sian nunan formon kaj eliras.

    Noto. Ĉar la SUBSTITUTE-funkcio uzata en niaj kernaj formuloj estas majuskle-distinga , ambaŭ Lambdoj ( MultiReplace kaj ReplaceChars ) traktas majusklojn kaj minusklojn kiel malsamajn signojn.

    Amasa serĉo kaj anstataŭigo per UDF

    Se la LAMBDA-funkcio ne estas disponebla en via Excel, vi povas skribi uzant-difinitan funkcion por mult-anstataŭigo laŭ tradicia maniero uzante VBA.

    Por distingi la UDF de la funkcio MultiReplace difinita de LAMBDA, ni nomos ĝin alimaniere, diru MassReplace . La kodo de la funkcio estas jena:

    Funkcio MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () DimarRes() As Variant 'tabelo por konservi la rezultojn Dim arSearchReplace(), sTmp As String 'tabelo kie stoki la trovi/anstataŭigi parojn, provizora ĉeno Dim iFindCurRow, cntFindRows As Long 'indekso de la nuna vico de la SearchReplace tabelo, kalkuli de vicoj Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'indekso de la nuna vico en la fonta gamo, indekso de la nuna kolumno en la fonta gamo, kalkulo de vicoj, kalkulo de kolumnoj cntInputRows = InputRng.Rows.Count = InputRngCols .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'preparante la tabelon de trovi/anstataŭigi parojn For iFindRow1 cReplacen iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Valo arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Sekva 'Serĉado kaj anstataŭigo en la fonta gamo Por iInputCurRow =Enigo1CurRow =Enigo. 1 Al cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Valo 'Anstataŭigi ĉiujn trovajn/anstataŭigi parojn en ĉiu ĉelo Por iFindCurRow = 1 Al cntFindRows sTmp = Anstataŭigi(sTmp, arSearchReplace(iFindCurRow, 1), arSearchReplace)Sekva(arSearch2CurRow) (iInputCurRow, iInputCurCol) = sTmp Sekva Sekva MassReplace = arRes End Function

    Kiel LAMBDA-difinitaj funkcioj, UDF-oj estas larĝlibro . Tio signifas la

    Michael Brown estas diligenta teknologia entuziasmulo kun pasio por simpligi kompleksajn procezojn uzante programarajn ilojn. Kun pli ol jardeko da sperto en la teknologia industrio, li perfektigis siajn kapablojn en Microsoft Excel kaj Outlook, same kiel Google Sheets kaj Docs. La blogo de Mikaelo estas dediĉita al kunhavigi siajn sciojn kaj kompetentecon kun aliaj, provizante facilajn sekvajn konsiletojn kaj lernilojn por plibonigi produktivecon kaj efikecon. Ĉu vi estas sperta profesiulo aŭ komencanto, la blogo de Mikaelo ofertas valorajn komprenojn kaj praktikajn konsilojn por eltiri la plej multajn el ĉi tiuj esencaj programaj iloj.