Excel: იპოვნეთ და შეცვალეთ რამდენიმე მნიშვნელობა ერთდროულად

  • გააზიარეთ ეს
Michael Brown

ამ სახელმძღვანელოში ჩვენ განვიხილავთ რამდენიმე გზას მრავალი სიტყვის, სტრიქონის ან ცალკეული სიმბოლოს პოვნისა და ჩანაცვლებისთვის, ასე რომ თქვენ შეგიძლიათ აირჩიოთ ის, რომელიც საუკეთესოდ შეესაბამება თქვენს საჭიროებებს.

როგორ ეძებენ ადამიანები ჩვეულებრივ Excel-ში? ძირითადად, Find & შეცვალეთ ფუნქცია, რომელიც კარგად მუშაობს ცალკეულ მნიშვნელობებზე. მაგრამ რა მოხდება, თუ ათობით ან თუნდაც ასობით ელემენტი გაქვთ ჩასანაცვლებელი? რა თქმა უნდა, არავის არ სურს ყველა ამ ჩანაცვლების გაკეთება ხელით სათითაოდ და შემდეგ კვლავ განახორციელოს ეს ყველაფერი, როდესაც მონაცემები შეიცვლება. საბედნიეროდ, Excel-ში მასობრივი ჩანაცვლების კიდევ რამდენიმე ეფექტური მეთოდი არსებობს და ჩვენ ვაპირებთ თითოეულ მათგანს დეტალურად გამოვიკვლიოთ.

    იპოვეთ და შეცვალეთ მრავალი მნიშვნელობის წყობილი 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, change_range)

    სად:

    • Input_range - წყაროს დიაპაზონი, სადაც გსურთ შეცვალოთ მნიშვნელობები.
    • Find_range - სიმბოლოები, სტრიქონები ან სიტყვები საძიებლად.
    • Replace_range - სიმბოლოები, სტრიქონები, ან სიტყვებით შესაცვლელი.

    Excel 365-ში, დინამიური მასივების მხარდაჭერის გამო, ეს მუშაობს როგორც ჩვეულებრივი ფორმულა, რომელიც მხოლოდ ზედა უჯრედში უნდა იყოს შეყვანილი (B2):

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

    წინა დინამიურ Excel-ში ეს მუშაობს როგორც ძველი სტილის CSE მასივის ფორმულა: ირჩევთ წყაროს მთელ დიაპაზონს (B2:B10), აკრიფეთ ფორმულა და დააჭირეთ Ctrl + Shift + Enter კლავიშებს ერთდროულად მის დასასრულებლად.

    უპირატესობები : პერსონალური LAMBDA ფუნქციის ღირსეული ალტერნატივა Excel 2019-ში , Excel 2016 და ადრინდელი ვერსიები

    ნაკლოვანებები : სამუშაო წიგნი უნდა იყოს შენახული, როგორც მაკრო ჩართული .xlsm ფაილი

    Excel-ში სრული ჩანაცვლება VBA მაკროთი

    თუ გიყვარს ავტო შეჯვარება საერთო ამოცანები მაკროსთან, მაშინ თქვენშეუძლია გამოიყენოს შემდეგი VBA კოდი დიაპაზონში მრავალი მნიშვნელობის მოსაძებნად და ჩასანაცვლებლად.

    Sub BulkReplace() Dim Rng როგორც დიაპაზონი, SourceRng როგორც დიაპაზონი, ReplaceRng როგორც დიაპაზონი შეცდომის შესახებ განაახლეთ შემდეგი ნაკრები SourceRng = Application.InputBox( "წყაროს მონაცემები: " , "Bulk Replace" , Application.Selection.Address, Type :=8) Err.Clear If Not SourceRng Is Nothing მაშინ დააყენეთ ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear If Not ReplaceRng არაფერია, მაშინ Application.ScreenUpdating = False თითოეული Rng-ისთვის ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, ჩანაცვლება:=Rng.Offset(0, 1).Value შემდეგი Application.ScreenUpdating = True End If End If End Sub

    იმისთვის, რომ გამოიყენოთ მაკრო დაუყოვნებლივ, შეგიძლიათ ჩამოტვირთოთ ჩვენი სამუშაო წიგნის ნიმუში, რომელიც შეიცავს კოდს. ან შეგიძლიათ ჩასვათ კოდი თქვენს სამუშაო წიგნში.

    როგორ გამოვიყენოთ მაკრო

    მაკროს გაშვებამდე, ჩაწერეთ ძველი და ახალი მნიშვნელობები ორ მიმდებარე სვეტში, როგორც ეს ნაჩვენებია ქვემოთ მოცემულ სურათზე ( C2:D4).

    და შემდეგ აირჩიეთ თქვენი წყაროს მონაცემები, დააჭირეთ Alt + F8 , აირჩიეთ BulkReplace მაკრო და დააწკაპუნეთ Run .

    რადგან source rage არის წინასწარ შერჩეული, უბრალოდ გადაამოწმეთ მითითება და დააწკაპუნეთ OK:

    ამის შემდეგ, აირჩიეთ ჩანაცვლება დიაპაზონი და დააწკაპუნეთ OK:

    შესრულებულია!

    უპირატესობები : ერთხელ დაყენება, ხელახლა გამოყენება ნებისმიერ დროს

    ნაკლოვანებები : მაკრო უნდა იყოს გაშვებული ყველა მონაცემითცვლილება

    Excel-ში მრავალი პოვნა და ჩანაცვლება Substring ხელსაწყოთი

    პირველ მაგალითში მე აღვნიშნე, რომ ჩადგმული SUBSTITUTE არის ყველაზე მარტივი გზა Excel-ში მრავალი მნიშვნელობის ჩანაცვლებისთვის. ვაღიარებ, რომ ვცდებოდი. ჩვენი Ultimate Suite საქმეს კიდევ უფრო აადვილებს!

    თქვენს სამუშაო ფურცელში მასობრივი ჩანაცვლებისთვის გადადით Ablebits Data ჩანართზე და დააწკაპუნეთ Substring Tools > ჩაანაცვლეთ ქვესტრიქონები .

    ქვესტრიქონების ჩანაცვლება გამოჩნდება დიალოგური ფანჯარა, რომელიც მოგთხოვთ განსაზღვროთ წყარო დიაპაზონი და ქვესტრიქონების დიაპაზონი.

    ორი დიაპაზონის არჩეულით დააწკაპუნეთ ჩანაცვლება ღილაკზე და იპოვეთ შედეგები მარჯვნივ ჩასმული ახალ სვეტში. ორიგინალური მონაცემებიდან. დიახ, ეს ასე მარტივია!

    რჩევა. სანამ დააწკაპუნებთ ჩანაცვლება , თქვენ უნდა გაითვალისწინოთ ერთი მნიშვნელოვანი რამ - ველი case-sensitive . დარწმუნდით, რომ შეარჩიეთ იგი, თუ გსურთ დიდი და პატარა ასოები სხვადასხვა სიმბოლოებად ატაროთ. ამ მაგალითში, ჩვენ ვნიშნავთ ამ პარამეტრს, რადგან ჩვენ მხოლოდ გვინდა შევცვალოთ კაპიტალიზირებული სტრიქონები და დავტოვოთ ქვესტრიქონები, როგორიცაა "fr", "uk" ან "ak" სხვა სიტყვების ფარგლებში ხელუხლებლად.

    თუ გაინტერესებთ გაიგოთ, რა სხვა ნაყარი ოპერაციების შესრულება შეიძლება სტრინგებზე, შეამოწმეთ სხვა Substring Tools, რომლებიც შედის ჩვენს Ultimate Suite-ში. ან კიდევ უკეთესი, ჩამოტვირთეთ შეფასების ვერსია ქვემოთ და სცადეთ!

    აი როგორ უნდა იპოვოთ და ჩაანაცვლოთრამდენიმე სიტყვა და სიმბოლო ერთდროულად 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 ფუნქცია არის case-sensitive , რაც იმას ნიშნავს, რომ თქვენ უნდა აკრიფოთ ძველი მნიშვნელობები ( old_text ) იმავე ასოებით, როგორც ისინი გამოჩნდება თავდაპირველ მონაცემებში.

    რაც შეიძლება მარტივი იყოს, ამ მეთოდს აქვს მნიშვნელოვანი ნაკლი - როდესაც თქვენ გაქვთ ათობით ელემენტის ჩანაცვლება, ჩადგმული ფუნქციების მართვა საკმაოდ რთული ხდება.

    უპირატესობები : მარტივია -განახორციელოს; მხარდაჭერილია Excel-ის ყველა ვერსიაში

    ნაკლოვანებები : უმჯობესია გამოიყენოთ შეზღუდული რაოდენობის პოვნა/ჩანაცვლება მნიშვნელობებისთვის

    მოძებნეთ და შეცვალეთ მრავალი ჩანაწერი XLOOKUP-ით

    იმ სიტუაციაში, როდესაც თქვენ ეძებთ უჯრედის მთლიანი შინაარსის შეცვლას და არა მისი ნაწილის, XLOOKUP ფუნქცია გამოდგება.

    მოდით,თქვით, რომ თქვენ გაქვთ ქვეყნების სია A სვეტში და მიზნად ისახავთ შეცვალოთ ყველა აბრევიატურა შესაბამისი სრული სახელებით. წინა მაგალითის მსგავსად, თქვენ იწყებთ "Find" და "Replace" ელემენტების ცალკეულ სვეტებში (D და E შესაბამისად) შეყვანით და შემდეგ შეიყვანეთ ეს ფორმულა B2-ში:

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

    Excel-ის ენიდან ადამიანურ ენაზე თარგმნილი, აი რას აკეთებს ფორმულა:

    მოძებნეთ A2 მნიშვნელობა (lookup_value) D2:D4 (lookup_array) და დააბრუნეთ შესატყვისი E2:E4-დან (return_array). თუ ვერ მოიძებნა, ამოიღეთ ორიგინალური მნიშვნელობა 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 ფუნქციის გამოყენებით

    მაიკროსოფტისთვის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=""), მაშინ დააბრუნეთ ტექსტი და გასვლა; წინააღმდეგ შემთხვევაში დარეკეთ MultiReplace .

    ყველაზე რთული ნაწილი დასრულებულია! რაც დაგვრჩა არის სახელის მენეჯერში MultiReplace ფუნქციის დარქმევა, როგორც ეს ნაჩვენებია ქვემოთ მოცემულ ეკრანის სურათზე. დეტალური ინსტრუქციებისთვის იხილეთ როგორ დაასახელოთ LAMBDA ფუნქცია.

    როდესაც ფუნქცია მიიღებს სახელს, შეგიძლიათ გამოიყენოთ ის ისევე, როგორც ნებისმიერი სხვა ჩაშენებული ფუნქცია.

    ფორმულის ორი ვარიაციიდან რომელს აირჩევთ, საბოლოო მომხმარებლის თვალსაზრისით, სინტაქსი ისეთივე მარტივია:

    MultiReplace(ტექსტი, ძველი, ახალი)

    სად:

    • ტექსტი - წყაროს მონაცემები
    • ძველი - მნიშვნელობები, რომლებიც უნდა იპოვოთ
    • ახალი - მნიშვნელობები ჩანაცვლებით

    წინა მაგალითს ცოტა შორს რომ გადავხედოთ, შევცვალოთ არა მხოლოდ ქვეყნების აბრევიატურები, არამედ სახელმწიფო აბრევიატურებიც. ამისათვის აკრიფეთ აბრევიატურები ( ძველი მნიშვნელობები) D სვეტში, რომელიც იწყება D2-დან და სრული სახელები ( ახალი მნიშვნელობები) E სვეტში დაწყებული E2-დან.

    ინ. 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 ფუნქცია ამუშავებს არა ორიგინალურ ტექსტურ სტრიქონს, არამედ წინა ზარის გამომავალს.

    ყველა ელემენტის დასამუშავებლად ძველი სია, ვიწყებთ ყველაზე ზედა უჯრედით და ვიყენებთ OFFSET ფუნქციას, რომ გადავიტანოთ 1 მწკრივი ქვემოთ ყოველი ურთიერთქმედებით:

    OFFSET(old, 1, 0)

    იგივე კეთდება ახალი სია:

    OFFSET(new, 1, 0)

    გადამწყვეტი მნიშვნელობა აქვს გასასვლელის უზრუნველყოფას, რათა თავიდან აიცილოთ რეკურსიული ზარები სამუდამოდ. ეს კეთდება IF ფუნქციის დახმარებით - თუ ძველი უჯრედი ცარიელია, ფუნქცია უბრუნებს ტექსტს დღევანდელ ფორმას და გამოდის:

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

    ან

    =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(ტექსტი, ძველი_სიმბოლოები, ახალი_სიმბოლოები)

    სად:

    • ტექსტი - ორიგინალური სტრიქონები
    • ძველი - სიმბოლოები მოსაძებნად
    • ახალი - სიმბოლოები ჩანაცვლება

    საველე ტესტის მისაცემად, მოდით გავაკეთოთ ისეთი რამ, რაც ხშირად შესრულებულია იმპორტირებულ მონაცემებზე - შეცვალეთ ჭკვიანი ბრჭყალები და გონიერი აპოსტროფები სწორი ბრჭყალებით და სწორი აპოსტროფებით.

    პირველ რიგში, ჩვენ შევიყვანთ ჭკვიან ბრჭყალებსა და ჭკვიან აპოსტროფებს D2-ში, პირდაპირ ბრჭყალებსა და პირდაპირ აპოსტროფებს E2-ში. , სიმბოლოების გამოყოფა სივრცეებით უკეთესი წაკითხვისთვის. (რადგან ორივე უჯრედში ვიყენებთ ერთსა და იმავე დელიმიტერს, ის არ იმოქმედებს შედეგზე - Excel უბრალოდ ჩაანაცვლებს ინტერვალს ინტერვალით.)

    ამის შემდეგ შევიყვანთ ამ ფორმულას B2-ში:

    =ReplaceChars(A2:A4, D2, E2)

    და მიიღეთ ზუსტად ის შედეგები, რასაც ვეძებდით:

    ასევე შესაძლებელია სიმბოლოების პირდაპირ ფორმულაში აკრეფა. ჩვენს შემთხვევაში, უბრალოდ დაიმახსოვრეთ სწორი ციტატების „დუბლირება“ შემდეგნაირად:

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

    როგორ მუშაობს ეს ფორმულა

    ReplaceChars ფუნქცია ციკლობს old_chars და new_chars სტრიქონებში და აკეთებს ერთჯერად ჩანაცვლებას მარცხნივ პირველი სიმბოლოდან დაწყებული. ეს ნაწილი კეთდება 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 ფუნქცია არის მცირე რეგისტრის მგრძნობიარე , ორივე ლამბდა ( MultiReplace და ReplaceChars ) დიდ და პატარა ასოებს განსხვავებულ სიმბოლოდ განიხილავს.

    მასობრივი პოვნა და ჩანაცვლება UDF-ით

    იმ შემთხვევაში, თუ LAMBDA ფუნქცია მიუწვდომელია თქვენს Excel-ში, შეგიძლიათ დაწეროთ მომხმარებლის მიერ განსაზღვრული ფუნქცია მრავალ ჩანაცვლებისთვის ტრადიციული გზით VBA-ს გამოყენებით.

    UDF-ს LAMBDA-ით განსაზღვრული MultiReplace ფუნქციისგან გასარჩევად, ჩვენ ვაპირებთ მას სხვაგვარად დავასახელოთ, ვთქვათ MassReplace . ფუნქციის კოდი ასეთია:

    ფუნქცია MassReplace(InputRng როგორც დიაპაზონი, FindRng როგორც დიაპაზონი, ReplaceRng როგორც დიაპაზონი) როგორც Variant () DimarRes() როგორც Variant 'მაივი შედეგების შესანახად Dim arSearchReplace(), sTmp როგორც სტრიქონი' მასივი სადაც შეინახება წყვილების პოვნა/ჩანაცვლება, დროებითი სტრიქონი Dim iFindCurRow, cntFindRows As Long' SearchReplace მასივის მიმდინარე მწკრივის ინდექსი, დათვლა სტრიქონების Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols სანამ "მიმდინარე მწკრივის ინდექსი წყაროს დიაპაზონში, მიმდინარე სვეტის ინდექსი წყაროს დიაპაზონში, მწკრივების რაოდენობა, სვეტების რაოდენობა cntInputRows = InputRng.Rows.CountCunt Rng =InputRng .Columns.Count cntFindRows = FindRng.Rows.Count ReDim arRes(1 to cntInputRows, 1 to cntInputCols) ReDim arSearchReplace(1 To cntFindRows, 1 To 2) 'ამზადებს წყვილების find/replace arRes1/Replace წყვილებს cntInputCols-ისთვის iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).Value arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).Value Next 'ძიება და ჩანაცვლება წყაროს დიაპაზონში For Input1CurRow =Input1CurC. 1 cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol).Value 'ყველა წყვილის ჩანაცვლება თითოეულ უჯრედში iFindCurRow = 1 to cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1,ArSearchNextReplace(iFindCurRow, 1) (iInputCurRow, iInputCurCol) = sTmp შემდეგი შემდეგი MassReplace = arRes End ფუნქცია

    ლაMBDA-ში განსაზღვრული ფუნქციების მსგავსად, UDF-ები არის სამუშაო წიგნის მასშტაბით . ეს ნიშნავს

    მაიკლ ბრაუნი არის ტექნოლოგიის ერთგული ენთუზიასტი, რომელსაც აქვს გატაცება პროგრამული ინსტრუმენტების გამოყენებით რთული პროცესების გამარტივებისთვის. ტექნოლოგიურ ინდუსტრიაში ათწლეულზე მეტი გამოცდილებით, მან დახვეწა თავისი უნარები Microsoft Excel-სა და Outlook-ში, ასევე Google Sheets-სა და Docs-ში. მაიკლის ბლოგი ეძღვნება თავისი ცოდნისა და გამოცდილების სხვებს გაზიარებას, ადვილად მისაწვდომ რჩევებსა და გაკვეთილებს პროდუქტიულობისა და ეფექტურობის გასაუმჯობესებლად. მიუხედავად იმისა, გამოცდილი პროფესიონალი ხართ თუ დამწყები, მაიკლის ბლოგი გთავაზობთ ღირებულ შეხედულებებსა და პრაქტიკულ რჩევებს ამ აუცილებელი პროგრამული ხელსაწყოებიდან მაქსიმალური სარგებლობის მისაღებად.