Բովանդակություն
Այս ձեռնարկում մենք կդիտարկենք բազմաթիվ բառեր, տողեր կամ առանձին նիշեր գտնելու և փոխարինելու մի քանի եղանակներ, որպեսզի կարողանաք ընտրել այն մեկը, որը լավագույնս համապատասխանում է ձեր կարիքներին:
Ինչպե՞ս են մարդիկ սովորաբար որոնում Excel-ում: Հիմնականում, օգտագործելով Find & Փոխարինել գործառույթը, որը լավ է աշխատում առանձին արժեքների համար: Բայց ինչ անել, եթե դուք ունեք տասնյակ կամ նույնիսկ հարյուրավոր իրեր փոխարինելու համար: Անշուշտ, ոչ ոք չէր ցանկանա կատարել բոլոր այդ փոխարինումները ձեռքով մեկ առ մեկ, իսկ հետո նորից անել, երբ տվյալները փոխվեն: Բարեբախտաբար, Excel-ում զանգվածային փոխարինման մի քանի արդյունավետ մեթոդներ կան, և մենք մանրամասնորեն կուսումնասիրենք դրանցից յուրաքանչյուրը:
Գտեք և փոխարինեք բազմաթիվ արժեքներ nested SUBSTITUTE-ով
Excel-ում բազմաթիվ գրառումներ գտնելու և փոխարինելու ամենահեշտ ձևը SUBSTITUTE ֆունկցիան օգտագործելն է:
Բանաձևի տրամաբանությունը շատ պարզ է՝ դուք գրում եք մի քանի անհատական ֆունկցիա՝ հին արժեքը նորով փոխարինելու համար: . Եվ այնուհետև, դուք տեղադրում եք այդ գործառույթները մեկը մյուսի մեջ, այնպես որ յուրաքանչյուր հաջորդ SUBSTITUTE օգտագործում է նախորդ SUBSTITUTE-ի ելքը՝ հաջորդ արժեքը փնտրելու համար:
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( տեքստ, հին_տեքստ1, նոր_տեքստ1), հին_տեքստ2, նոր_տեքստ2), հին_տեքստ3, նոր_տեքստ3)A2:A10-ի վայրերի ցանկում, ենթադրենք, ցանկանում եք փոխարինել կրճատված երկրների անունները (օրինակ՝ FR , UK և USA ) լրիվով: MassReplace ֆունկցիան կաշխատի միայն աշխատանքային գրքում, որտեղ դուք տեղադրել եք կոդը: Եթե վստահ չեք, թե ինչպես դա անել ճիշտ, խնդրում ենք հետևել քայլերին, որոնք նկարագրված են Ինչպես տեղադրել VBA կոդը Excel-ում:
Հենց որ կոդը ավելացվի ձեր աշխատանքային գրքում, գործառույթը կհայտնվի միայն intellisense բանաձեւում: ֆունկցիայի անունը, ոչ թե արգումենտները: Չնայած, ես կարծում եմ, որ շարահյուսությունը հիշելը մեծ խնդիր չէ.
MassReplace(input_range, find_range, replace_range)Where:
- Input_range - աղբյուրի տիրույթ, որտեղ դուք ցանկանում եք փոխարինել արժեքները:
- Find_range - նիշերը, տողերը կամ բառերը որոնելու համար:
- Replace_range - նիշերը, տողերը, կամ բառերով փոխարինելու համար:
Excel 365-ում, դինամիկ զանգվածների աջակցության շնորհիվ, սա աշխատում է որպես սովորական բանաձև, որը պետք է մուտքագրվի միայն վերևի բջիջում (B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
Նախադինամիկ Excel-ում սա աշխատում է որպես հին ոճի CSE զանգվածի բանաձև. ընտրում եք աղբյուրի ողջ տիրույթը (B2:B10), մուտքագրեք բանաձևը և սեղմեք Ctrl + Shift + Enter ստեղները միաժամանակ՝ այն ավարտելու համար:
Առավելությունները . Excel 2019-ում սովորական LAMBDA ֆունկցիայի պատշաճ այլընտրանք , Excel 2016 և ավելի վաղ տարբերակներ
Թերություններ . աշխատանքային գիրքը պետք է պահպանվի որպես մակրո-միացված .xlsm ֆայլ
Excel-ում զանգվածային փոխարինում VBA մակրոյով
Եթե սիրում եք մեքենա զուգավորում ընդհանուր առաջադրանքները մակրոների հետ, ապա դուքկարող է օգտագործել հետևյալ VBA կոդը՝ մի շարք արժեքներ գտնելու և փոխարինելու համար:
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) Սխալ.Clear If Not ReplaceRng-ը ոչինչ է, ապա Application.ScreenUpdating = False For Every Rng In ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, փոխարինում:=Rng.Offset(0, 1).Value Next Application.ScreenUpdating = True End If End If End SubՄակրոյից անմիջապես օգտվելու համար կարող եք ներբեռնել կոդը պարունակող մեր աշխատանքային գրքույկի նմուշը: Կամ կարող եք տեղադրել կոդը ձեր սեփական աշխատանքային գրքում:
Ինչպես օգտագործել մակրո
Մակրոն գործարկելուց առաջ մուտքագրեք հին և նոր արժեքները երկու հարակից սյունակներում, ինչպես ցույց է տրված ստորև նկարում ( C2:D4):
Եվ այնուհետև ընտրեք ձեր աղբյուրի տվյալները, սեղմեք Alt + F8 , ընտրեք BulkReplace մակրո և սեղմեք Գործարկել :
Քանի որ աղբյուրի զայրույթը նախապես ընտրված է, պարզապես ստուգեք հղումը և սեղմեք OK:
Դրանից հետո, ընտրեք փոխարինել տիրույթը և սեղմեք Լավ.
Կատարված է:
Առավելությունները . կարգավորեք մեկ անգամ, նորից օգտագործեք ցանկացած ժամանակ
Թերություններ . մակրոն պետք է գործարկվի յուրաքանչյուր տվյալների հետ:փոփոխություն
Excel-ում բազմակի գտնել և փոխարինել Substring գործիքով
Առաջին օրինակում ես նշեցի, որ nested SUBSTITUTE-ը Excel-ում բազմաթիվ արժեքներ փոխարինելու ամենահեշտ ձևն է: Ես ընդունում եմ, որ սխալվել եմ։ Մեր Ultimate Suite-ն ավելի է հեշտացնում ամեն ինչ:
Ձեր աշխատաթերթում զանգվածային փոխարինում կատարելու համար անցեք Ablebits Data ներդիր և սեղմեք Ենթատողային գործիքներ > Փոխարինել ենթատողերը ։
Փոխարինել ենթատողերը երկխոսության տուփը կհայտնվի՝ խնդրելով սահմանել Աղբյուր տիրույթը և Ենթատողերի տիրույթ:
Ընտրված երկու միջակայքերով սեղմեք Փոխարինել կոճակը և գտեք արդյունքները աջ կողմում տեղադրված նոր սյունակում: սկզբնական տվյալներից։ Այո, դա այդքան հեշտ է:
Խորհուրդ. Նախքան Փոխարինել սեղմելը, պետք է հաշվի առնել մեկ կարևոր բան՝ Փոքրատառերի զգայուն վանդակը: Համոզվեք, որ ընտրեք այն, եթե ցանկանում եք մեծատառ և փոքրատառ տառերը տարբեր նիշերով վերաբերվել: Այս օրինակում մենք նշում ենք այս տարբերակը, քանի որ ցանկանում ենք փոխարինել միայն մեծատառով տողերը և անփոփոխ թողնել ենթատողերը, ինչպիսիք են «fr», «uk» կամ «ak» այլ բառերի մեջ:
Եթե դուք հետաքրքրված եք իմանալ, թե ինչ այլ զանգվածային գործողություններ կարող են իրականացվել լարերի վրա, ստուգեք մեր Ultimate Suite-ի հետ ներառված այլ Substring Tools-ը: Կամ ավելի լավ, ներբեռնեք ստորև ներկայացված գնահատման տարբերակը և փորձեք այն:
Ահա թե ինչպես կարելի է գտնել և փոխարինելExcel-ում միանգամից բազմաթիվ բառեր և նիշեր: Շնորհակալ եմ կարդալու համար և հուսով եմ, որ հաջորդ շաբաթ կտեսնենք ձեզ մեր բլոգում:
Հասանելի ներբեռնումներ
Բազմաթիվ գտնել և փոխարինել Excel-ում (.xlsm ֆայլ)
Ultimate Suite 14 -օրվա լիարժեք ֆունկցիոնալ տարբերակ (.exe ֆայլ)
անունները:Այն ավարտելու համար մուտքագրեք հին արժեքները D2:D4-ում և նոր արժեքները E2:E4-ում, ինչպես ցույց է տրված ստորև նշված սքրինշոթում: Եվ այնուհետև դրեք ստորև բերված բանաձևը B2-ում և սեղմեք Enter:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
…և դուք միանգամից կկատարեք բոլոր փոխարինումները.
Խնդրում ենք նկատի ունենալ, որ վերը նշված մոտեցումը գործում է միայն Excel 365 -ում, որն աջակցում է դինամիկ զանգվածներ:
Excel 2019, Excel 2016 և ավելի վաղ նախադինամիկ տարբերակներում, բանաձևը պետք է լինի գրված է ամենավերին բջիջի համար (B2), այնուհետև պատճենվում է ստորև բերված բջիջներում.
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
Խնդրում ենք ուշադրություն դարձնել, որ այս դեպքում մենք արգելափակում ենք փոխարինման արժեքները բացարձակ բջիջների հղումներով, ուստի բանաձևը ներքև պատճենելիս նրանք չեն փոխվի:
Նշում. SUBSTITUTE ֆունկցիան մեծատառերի զգայուն է , ինչը նշանակում է, որ դուք պետք է մուտքագրեք հին արժեքները ( old_text ) նույն տառային մեծատառով, ինչպես դրանք հայտնվում են սկզբնական տվյալների մեջ:
Որքան էլ որ հեշտ լինի, այս մեթոդն ունի էական թերություն. երբ դուք ունեք տասնյակ տարրեր փոխարինելու, ներկառուցված գործառույթները կառավարելը բավականին դժվար է դառնում:
Առավելությունները . հեշտ -իրականացնել; աջակցվում է Excel-ի բոլոր տարբերակներում
Թերություններ . լավագույնս օգտագործվում է սահմանափակ թվով գտնել/փոխարինելու արժեքների համար
Որոնել և փոխարինել բազմաթիվ գրառումներ XLOOKUP-ով
Այն իրավիճակում, երբ դուք ցանկանում եք փոխարինել բջջի ամբողջ բովանդակությունը , ոչ թե դրա մի մասը, XLOOKUP ֆունկցիան օգտակար է:
Եկեքասեք, որ դուք ունեք Ա սյունակի երկրների ցանկը և նպատակ դրեք փոխարինել բոլոր հապավումները համապատասխան լրիվ անուններով: Ինչպես նախորդ օրինակում, դուք սկսում եք «Գտնել» և «Փոխարինել» տարրերը առանձին սյունակներում (համապատասխանաբար D և E) մուտքագրելով, այնուհետև մուտքագրել այս բանաձևը B2-ում՝
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
Excel-ի լեզվից մարդկային լեզվի թարգմանված, ահա թե ինչ է անում բանաձևը.
Փնտրեք A2 արժեքը (lookup_value) D2:D4-ում (որոնման_զանգված) և վերադարձրեք համընկնում E2:E4-ից (վերադարձի_զանգված): Եթե չգտնվի, քաշեք սկզբնական արժեքը A2-ից:
Կրկնակի սեղմեք լրացման բռնակի վրա, որպեսզի բանաձևը պատճենվի ստորև բերված բջիջներում, և արդյունքը ձեզ չի սպասի.
Քանի որ XLOOKUP ֆունկցիան հասանելի է միայն Excel 365-ում, վերը նշված բանաձևը չի աշխատի ավելի վաղ տարբերակներում: Այնուամենայնիվ, դուք հեշտությամբ կարող եք նմանակել այս վարքագիծը IFERROR-ի կամ IFNA-ի և VLOOKUP-ի համադրությամբ.
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
Նշում: Ի տարբերություն SUBSTITUTE-ի, XLOOKUP և VLOOKUP ֆունկցիաները չզգայուն են մեծատառերի նկատմամբ , ինչը նշանակում է, որ նրանք փնտրում են որոնման արժեքները՝ անտեսելով տառերի մեծատառը: Օրինակ, մեր բանաձևը կփոխարինի և՛ FR , և՛ fr France -ով:
Առավելությունները . սովորական գործառույթների անսովոր օգտագործում; աշխատում է Excel-ի բոլոր տարբերակներում
Թերություններ . աշխատում է բջջային մակարդակում, չի կարող փոխարինել բջիջի բովանդակության մի մասը
Բազմակի փոխարինում օգտագործելով ռեկուրսիվ LAMBDA ֆունկցիան
Microsoft-ի համար365 բաժանորդ, Excel-ը տրամադրում է հատուկ գործառույթ, որը թույլ է տալիս ստեղծել հատուկ գործառույթներ՝ օգտագործելով ավանդական բանաձևի լեզուն: Այո, ես խոսում եմ LAMBDA-ի մասին: Այս մեթոդի գեղեցկությունն այն է, որ այն կարող է շատ երկար և բարդ բանաձևը վերածել շատ կոմպակտ և պարզ բանաձևի: Ավելին, այն թույլ է տալիս ստեղծել ձեր սեփական գործառույթները, որոնք գոյություն չունեն Excel-ում, մի բան, որը նախկինում հնարավոր էր միայն VBA-ի միջոցով:
Մաքսային LAMBDA գործառույթների ստեղծման և օգտագործման վերաբերյալ մանրամասն տեղեկությունների համար խնդրում ենք ստուգել այս ձեռնարկը. Ինչպես Excel-ում LAMBDA ֆունկցիաները գրելու համար: Այստեղ մենք կքննարկենք մի քանի գործնական օրինակներ:
Առավելությունները . արդյունքը նրբագեղ և զարմանալիորեն հեշտ օգտագործման ֆունկցիա է՝ անկախ փոխարինվող զույգերի քանակից
Թերություններ . հասանելի է միայն Excel 365-ում; Հատուկ աշխատանքային գրքույկի համար և չի կարող վերօգտագործվել տարբեր աշխատանքային գրքույկներում
Օրինակ 1. Որոնել և փոխարինել մի քանի բառեր / տողեր միանգամից
Մի քանի բառ կամ տեքստ միանգամից փոխարինելու համար մենք ստեղծել ենք հատուկ տարբերակ LAMBDA ֆունկցիա, որը կոչվում է MultiReplace , որը կարող է ունենալ հետևյալ ձևերից մեկը.
=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))))
Երկուսն էլ ռեկուրսիվ են գործառույթներ, որոնք իրենց անվանում են. Տարբերությունը կայանում է նրանում, թե ինչպես է սահմանվում ելքի կետը:
Առաջին բանաձևում IF ֆունկցիան ստուգում է, թե արդյոք հին ցուցակը դատարկ չէ (հին""): Եթե TRUE է, ապա կանչվում է MultiReplace ֆունկցիան: Եթե FALSE, գործառույթըվերադարձնում է տեքստը իր ներկայիս ձևը և դուրս է գալիս:
Երկրորդ բանաձևն օգտագործում է հակադարձ տրամաբանությունը. եթե հին դատարկ է (old=""), ապա վերադարձրեք <1:>տեքստը և ելք; հակառակ դեպքում զանգահարեք MultiReplace :
Ամենադժվար մասը կատարված է: Ձեզ մնում է անվանել MultiReplace ֆունկցիան Name Manager-ում, ինչպես ցույց է տրված ստորև նշված սքրինշոթում: Մանրամասն ուղեցույցների համար տե՛ս Ինչպես անվանել LAMBDA ֆունկցիան:
Հենց որ ֆունկցիան անուն ստանա, դուք կարող եք այն օգտագործել այնպես, ինչպես ցանկացած այլ ներկառուցված ֆունկցիա:
Բանաձևերի երկու տարբերակներից որն էլ ընտրեք, վերջնական օգտագործողի տեսանկյունից, շարահյուսությունը նույնքան պարզ է.
MultiReplace(տեքստ, հին, նոր)Որտեղ.
- Տեքստ - աղբյուրի տվյալները
- Հին - արժեքները գտնելու համար
- Նոր - արժեքները, որոնք պետք է փոխարինվեն
Նախորդ օրինակը մի փոքր առաջ տանելով՝ փոխարինենք ոչ միայն երկրի հապավումները, այլև պետական հապավումները։ Դրա համար մուտքագրեք հապավումները ( հին արժեքներ) D սյունակում, որը սկսվում է D2-ով, և լրիվ անունները ( նոր արժեքներ) E սյունակում սկսվող E2-ով:
In B2, մուտքագրեք MultiReplace ֆունկցիան.
=MultiReplace(A2:A10, D2, E2)
Սեղմեք Enter և վայելեք արդյունքները :)
Ինչպես է աշխատում այս բանաձևը
Բանաձեւը հասկանալու թելադրանքը ռեկուրսիան հասկանալն է: Սա կարող է բարդ թվալ, բայց սկզբունքը բավականին պարզ է. Յուրաքանչյուրի հետկրկնություն, ռեկուրսիվ ֆունկցիան լուծում է ավելի մեծ խնդրի մեկ փոքր օրինակ: Մեր դեպքում, MultiReplace ֆունկցիան պտտվում է հին և նոր արժեքների միջով և յուրաքանչյուր օղակի հետ կատարում է մեկ փոխարինում՝
MultiReplace (SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
Ինչպես ներդրված SUBSTITUTE ֆունկցիաների դեպքում, նախորդ SUBSTITUTE-ի արդյունքը դառնում է text պարամետրը հաջորդ SUBSTITUTE-ի համար: Այլ կերպ ասած, MultiReplace -ի յուրաքանչյուր հաջորդ զանգի ժամանակ SUBSTITUTE ֆունկցիան մշակում է ոչ թե սկզբնական տեքստային տողը, այլ նախորդ զանգի ելքը:
<1-ի բոլոր տարրերը մշակելու համար:>հին ցուցակը, մենք սկսում ենք ամենավերին բջիջից և օգտագործում OFFSET ֆունկցիան յուրաքանչյուր փոխազդեցության հետ մեկ տող ներքև տեղափոխելու համար.
OFFSET(old, 1, 0)
Նույնը արվում է -ի համար: նոր ցուցակ.
OFFSET(new, 1, 0)
Կարևորն այն է, որ ապահովվի ելքի կետ ` կանխելու ռեկուրսիվ զանգերի ընդմիշտ շարունակությունը: Դա արվում է IF ֆունկցիայի օգնությամբ. եթե հին բջիջը դատարկ է, ֆունկցիան վերադարձնում է տեքստը իր ներկայիս ձևը և դուրս է գալիս՝
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
<3:>
կամ
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
Օրինակ 2. Excel-ում մի քանի նիշերի փոխարինում
Սկզբունքորեն, նախորդ օրինակում քննարկված MultiReplace ֆունկցիան կարող է. կարգավորել նաև առանձին նիշերը, պայմանով, որ յուրաքանչյուր հին և նոր նիշ մուտքագրվի առանձին վանդակում, ճիշտ այնպես, ինչպես վերը նշված սքրինշոթներում ներկայացված կրճատ և ամբողջական անունները:
Եթե նախընտրում եք մուտքագրել հինը:նիշերը մեկ բջիջում և նոր նիշերը մեկ այլ բջիջում կամ ուղղակիորեն մուտքագրեք դրանք բանաձևում, այնուհետև կարող եք ստեղծել մեկ այլ հատուկ գործառույթ, որը կոչվում է ReplaceChars ՝ օգտագործելով հետևյալ բանաձևերից մեկը.
=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))))
Հիշեք անվանել ձեր նոր Lambda ֆունկցիան Անունների կառավարիչում, ինչպես միշտ.
Եվ ձեր նոր հատուկ գործառույթը պատրաստ է օգտագործման.
ReplaceChars(տեքստ, հին_նիշեր, նոր_նիշեր)Որտեղ՝
- Text - բնօրինակ տողերը
- Հին - որոնելու համար նախատեսված նիշերը
- Նոր - նիշերը փոխարինելու համար
Դա դաշտային փորձարկում տալու համար, եկեք անենք մի բան, որը հաճախ կատարվում է ներմուծված տվյալների վրա. փոխարինենք խելացի չակերտները և խելացի ապոստրոֆները ուղիղ չակերտներով և ուղիղ ապաստրոֆներով:
Նախ, մենք մուտքագրում ենք խելացի չակերտները և խելացի ապաստրոֆը D2-ում, ուղիղ չակերտները և ուղիղ ապաստրոֆը E2-ում: , նիշերը բաժանելով բացատներով՝ ավելի լավ ընթերցանության համար: (Քանի որ մենք օգտագործում ենք նույն սահմանազատիչը երկու բջիջներում, դա որևէ ազդեցություն չի ունենա արդյունքի վրա. Excel-ը պարզապես բացատը կփոխարինի բացատով:)
Դրանից հետո B2-ում մուտքագրում ենք այս բանաձևը՝
=ReplaceChars(A2:A4, D2, E2)
Եվ ստացեք հենց այն արդյունքները, որոնք մենք փնտրում էինք.
Հնարավոր է նաև նիշերը ուղղակիորեն մուտքագրել բանաձևում: Մեր դեպքում պարզապես հիշեք, որ «կրկնօրինակեք» ուղիղ չակերտներն այսպես.
=ReplaceChars(A2:A4, "“ ” ’", """ "" '")
Ինչպես է աշխատում այս բանաձևը
ReplaceChars ֆունկցիան պտտվում է հին_նիշերը և նոր_նիշերը տողերի միջով և կատարում է մեկ փոխարինում՝ սկսած ձախ կողմի առաջին նիշից: Այս մասը կատարվում է SUBSTITUTE ֆունկցիայի միջոցով.
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
Յուրաքանչյուր կրկնման դեպքում RIGHT ֆունկցիան հանում է մեկ նիշ ձախից և՛ հին_նիշերը , և՛ : new_chars տողեր, որպեսզի LEFT-ը կարողանա վերցնել հաջորդ զույգ նիշերը փոխարինման համար.
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
Յուրաքանչյուր ռեկուրսիվ զանգից առաջ IF ֆունկցիան գնահատում է old_chars տողը: . Եթե այն դատարկ չէ, ֆունկցիան իրեն կանչում է: Հենց որ վերջին նիշը փոխարինվի, կրկնման գործընթացը ավարտվում է, բանաձևը վերադարձնում է տեքստը իր ներկայիս ձևը և դուրս է գալիս:
Նշում. Քանի որ մեր հիմնական բանաձևերում օգտագործվող SUBSTITUTE ֆունկցիան մեծատառ զգայուն է , և՛ Lambda-ները ( MultiReplace և ReplaceChars ) մեծատառերը և փոքրատառերը վերաբերվում են որպես տարբեր նիշերի:
Զանգվածային գտնել և փոխարինել UDF-ով
Այն դեպքում, երբ LAMBDA ֆունկցիան հասանելի չէ ձեր Excel-ում, կարող եք գրել օգտատիրոջ կողմից սահմանված ֆունկցիա բազմակի փոխարինման համար ավանդական եղանակով՝ օգտագործելով VBA:
UDF-ը LAMBDA-ով սահմանված MultiReplace ֆունկցիայից տարբերելու համար մենք այն այլ կերպ ենք անվանում, ասենք MassReplace : Ֆունկցիայի կոդը հետևյալն է՝
Function MassReplace(InputRng As Range, FindRng as Range, ReplaceRng as Range) As Variant () DimarRes() Որպես Տարբերակ «զանգված՝ արդյունքները պահելու համար Dim arSearchReplace(), sTmp Որպես տող «զանգված, որտեղ պահելու համար գտնել/փոխարինել զույգերը, ժամանակավոր տող Dim iFindCurRow, cntFindRows As Long «SearchReplace զանգվածի ընթացիկ տողի ինդեքսը, հաշվել տողերի Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols Քանի դեռ «Ընթացիկ տողի ինդեքսը աղբյուրի տիրույթում, ընթացիկ սյունակի ինդեքսը աղբյուրի տիրույթում, տողերի քանակը, սյունակների քանակը cntInputRows = InputRng.Rows.Count Count cntRng .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 To cntInputRows, 1 To cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'պատրաստում է find/replace the array arRes(1/փոխարինել cntInputCols-ի համար cntInputCols) iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'Որոնում և փոխարինում աղբյուրի տիրույթում For iInput1Rows For 1 դեպի cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'Փոխարինելով բոլոր գտնել/փոխարինել զույգերը յուրաքանչյուր բջիջում iFindCurRow = 1 To cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1,ArSearch NextReplace(iFindCurRow, 1)i, (iInputCurRow, iInputCurCol) = sTmp Հաջորդ Հաջորդը MassReplace = arRes End FunctionԻնչպես LAMBDA-ով սահմանված գործառույթները, UDF-ները ունեն աշխատանքային գրքույկի լայնությունը : Դա նշանակում է