Excel៖ ស្វែងរក និងជំនួសតម្លៃច្រើនក្នុងពេលតែមួយ

  • ចែករំលែកនេះ។
Michael Brown

នៅក្នុងមេរៀននេះ យើងនឹងពិនិត្យមើលវិធីជាច្រើនដើម្បីស្វែងរក និងជំនួសពាក្យជាច្រើន ខ្សែអក្សរ ឬតួអក្សរនីមួយៗ ដូច្នេះអ្នកអាចជ្រើសរើសមួយណាដែលសាកសមបំផុតនឹងតម្រូវការរបស់អ្នក។

តើមនុស្សជាធម្មតាស្វែងរកក្នុង Excel យ៉ាងដូចម្តេច? ភាគច្រើន ដោយប្រើ Find & ជំនួសមុខងារ ដែលដំណើរការល្អសម្រាប់តម្លៃតែមួយ។ ប៉ុន្តែចុះយ៉ាងណាបើអ្នកមានវត្ថុរាប់សិប ឬរាប់រយដើម្បីជំនួស? ប្រាកដណាស់ គ្មាននរណាម្នាក់ចង់ធ្វើការជំនួសទាំងអស់ដោយដៃម្តងមួយៗ ហើយបន្ទាប់មកធ្វើវាម្តងទៀតនៅពេលទិន្នន័យផ្លាស់ប្តូរ។ ជាសំណាងល្អ មានវិធីសាស្រ្តដ៏មានប្រសិទ្ធភាពមួយចំនួនទៀតក្នុងការជំនួសម៉ាស់នៅក្នុង Excel ហើយយើងនឹងស៊ើបអង្កេតពួកវានីមួយៗយ៉ាងលម្អិត។

    ស្វែងរក និងជំនួសតម្លៃជាច្រើនដោយប្រើ SUBSTITUTE ដែលត្រូវបានភ្ជាប់

    មធ្យោបាយងាយស្រួលបំផុតក្នុងការស្វែងរក និងជំនួសធាតុជាច្រើននៅក្នុង Excel គឺដោយប្រើមុខងារ SUBSTITUTE។

    តក្កវិជ្ជារបស់រូបមន្តគឺសាមញ្ញណាស់៖ អ្នកសរសេរមុខងារបុគ្គលមួយចំនួនដើម្បីជំនួសតម្លៃចាស់ជាមួយនឹងតម្លៃថ្មីមួយ។ . ហើយបន្ទាប់មក អ្នកដាក់មុខងារទាំងនោះទៅក្នុងមួយផ្សេងទៀត ដូច្នេះ SUBSTITUTE បន្តបន្ទាប់គ្នាប្រើលទ្ធផលនៃ SUBSTITUTE មុន ដើម្បីរកមើលតម្លៃបន្ទាប់។

    SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( text, )> old_text1, new_text1), old_text2, new_text2), old_text3, new_text3)

    នៅក្នុងបញ្ជីទីតាំងនៅក្នុង A2:A10 ឧបមាថាអ្នកចង់ជំនួសឈ្មោះប្រទេសដែលមានអក្សរកាត់ (ដូចជា FR , UK និង USA ) ដោយពេញលេញមុខងារ MassReplace នឹងដំណើរការតែនៅក្នុងសៀវភៅការងារដែលអ្នកបានបញ្ចូលលេខកូដប៉ុណ្ណោះ។ ប្រសិនបើអ្នកមិនប្រាកដពីរបៀបធ្វើវាឱ្យត្រឹមត្រូវទេ សូមអនុវត្តតាមជំហានដែលបានពិពណ៌នានៅក្នុង របៀបបញ្ចូលកូដ VBA នៅក្នុង Excel។

    នៅពេលដែលលេខកូដត្រូវបានបន្ថែមទៅសៀវភៅការងាររបស់អ្នក មុខងារនឹងបង្ហាញនៅក្នុងរូបមន្ត intellisense - តែប៉ុណ្ណោះ ឈ្មោះមុខងារ មិនមែនអាគុយម៉ង់ទេ! ទោះបីជាយ៉ាងណាក៏ដោយ ខ្ញុំជឿថាវាមិនមែនជារឿងធំទេក្នុងការចងចាំវាក្យសម្ព័ន្ធ៖

    MassReplace(input_range, find_range, replace_range)

    Where:

    • Input_range - ជួរប្រភពដែល អ្នកចង់ជំនួសតម្លៃ។
    • Find_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 As Range, SourceRng As Range, ReplaceRng As Range On Error Resume Next Set SourceRng = Application.InputBox( "ទិន្នន័យប្រភព៖ " , "Bulk Replace", Application.Selection.Address, Type :=8) Err.Clear ប្រសិនបើមិនមែនជា SourceRng គឺគ្មានអ្វីទេ បន្ទាប់មកកំណត់ ReplaceRng = Application.InputBox( "Replace range:" , "Bulk Replace" , Type :=8) Err.Clear ប្រសិនបើមិន ReplaceRng គ្មានអ្វីទេនោះ Application.ScreenUpdating = False សម្រាប់ Rng នីមួយៗក្នុង ReplaceRng.Columns(1).Cells SourceRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).តម្លៃបន្ទាប់ Application.ScreenUpdating = True End If End If End Sub

    ដើម្បីប្រើប្រាស់ម៉ាក្រូភ្លាមៗ អ្នកអាចទាញយកសៀវភៅការងារគំរូរបស់យើងដែលមានលេខកូដ។ ឬអ្នកអាចបញ្ចូលកូដនៅក្នុងសៀវភៅការងារផ្ទាល់ខ្លួនរបស់អ្នក។

    របៀបប្រើម៉ាក្រូ

    មុននឹងដំណើរការម៉ាក្រូ សូមវាយតម្លៃចាស់ និងថ្មីទៅក្នុងជួរឈរជាប់គ្នាពីរដូចបង្ហាញក្នុងរូបភាពខាងក្រោម ( C2:D4)។

    ហើយបន្ទាប់មក ជ្រើសរើសទិន្នន័យប្រភពរបស់អ្នក ចុច Alt + F8 ជ្រើសរើសម៉ាក្រូ BulkReplace ហើយចុច Run

    ដូចដែល ប្រភព Rage ត្រូវបានជ្រើសរើសជាមុន គ្រាន់តែផ្ទៀងផ្ទាត់ឯកសារយោង ហើយចុចយល់ព្រម៖

    បន្ទាប់ពីនោះ ជ្រើសរើស ជំនួសជួរ ហើយចុចយល់ព្រម៖

    រួចរាល់!

    គុណសម្បត្តិ ៖ ដំឡើងម្តង ប្រើឡើងវិញបានគ្រប់ពេល

    គុណវិបត្តិ ៖ ម៉ាក្រូត្រូវដំណើរការជាមួយរាល់ទិន្នន័យផ្លាស់ប្តូរ

    ការស្វែងរកច្រើន និងជំនួសក្នុង Excel ដោយប្រើឧបករណ៍ខ្សែអក្សររង

    ក្នុងឧទាហរណ៍ដំបូង ខ្ញុំបានរៀបរាប់ថា SUBSTITUTE ដែលត្រូវបានភ្ជាប់គឺជាវិធីងាយស្រួលបំផុតដើម្បីជំនួសតម្លៃច្រើននៅក្នុង Excel ។ ខ្ញុំសារភាពថាខ្ញុំខុស។ Ultimate Suite របស់យើងធ្វើឱ្យអ្វីៗកាន់តែងាយស្រួល!

    ដើម្បីធ្វើការផ្លាស់ប្តូរទ្រង់ទ្រាយធំនៅក្នុងសន្លឹកកិច្ចការរបស់អ្នក សូមចូលទៅកាន់ផ្ទាំង Ablebits Data ហើយចុច Substring Tools > ជំនួសខ្សែអក្សររង

    ប្រអប់ ជំនួសខ្សែអក្សររង នឹងបង្ហាញឡើងដោយស្នើសុំឱ្យអ្នកកំណត់ជួរ ប្រភព និង Substrings range។

    ជាមួយនឹងជួរពីរដែលបានជ្រើសរើស សូមចុចប៊ូតុង Replace ហើយស្វែងរកលទ្ធផលនៅក្នុងជួរឈរថ្មីដែលបានបញ្ចូលទៅខាងស្តាំ។ នៃទិន្នន័យដើម។ បាទ វាងាយស្រួលណាស់!

    គន្លឹះ។ មុនពេលចុច ជំនួស មានរឿងសំខាន់មួយសម្រាប់អ្នកដែលត្រូវពិចារណា - ប្រអប់ Case-sensitive ។ ត្រូវប្រាកដថាជ្រើសរើសវា ប្រសិនបើអ្នកចង់ដោះស្រាយអក្សរធំ និងអក្សរតូចជាតួអក្សរផ្សេងគ្នា។ ក្នុងឧទាហរណ៍នេះ យើងគូសជម្រើសនេះ ពីព្រោះយើងគ្រាន់តែចង់ជំនួសខ្សែអក្សរអក្សរធំ ហើយទុកខ្សែអក្សររងដូចជា "fr", "uk" ឬ "ak" នៅក្នុងពាក្យផ្សេងទៀតនៅដដែល។

    ប្រសិនបើអ្នកចង់ដឹងចង់ឃើញពីប្រតិបត្តិការមួយចំនួនផ្សេងទៀតដែលអាចត្រូវបានអនុវត្តនៅលើខ្សែអក្សរ សូមពិនិត្យមើលឧបករណ៍រងផ្សេងទៀតដែលរួមបញ្ចូលជាមួយ Ultimate Suite របស់យើង។ ឬប្រសើរជាងនេះ ទាញយកកំណែវាយតម្លៃខាងក្រោម ហើយសាកល្បងវា!

    នោះជាវិធីស្វែងរក និងជំនួសពាក្យ និងតួអក្សរច្រើនក្នុងពេលតែមួយក្នុង Excel ។ ខ្ញុំសូមអរគុណសម្រាប់ការអាន ហើយសង្ឃឹមថានឹងបានជួបអ្នកនៅលើប្លក់របស់យើងនៅសប្តាហ៍ក្រោយ!

    ការទាញយកដែលមាន

    ការស្វែងរកច្រើន និងជំនួសនៅក្នុង Excel (ឯកសារ .xlsm)

    Ultimate Suite 14 -day កំណែដែលមានមុខងារពេញលេញ (ឯកសារ .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 ហើយមានបំណងជំនួសអក្សរកាត់ទាំងអស់ជាមួយនឹងឈ្មោះពេញដែលត្រូវគ្នា។ ដូចក្នុងឧទាហរណ៍មុន អ្នកចាប់ផ្តើមដោយបញ្ចូលធាតុ "ស្វែងរក" និង "ជំនួស" នៅក្នុងជួរឈរដាច់ដោយឡែក (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 ដោយ បារាំង

    គុណសម្បត្តិ ៖ ការប្រើប្រាស់មុខងារធម្មតាមិនធម្មតា; ដំណើរការនៅក្នុងកំណែ Excel ទាំងអស់

    គុណវិបត្តិ ៖ ដំណើរការលើកម្រិតក្រឡា មិនអាចជំនួសផ្នែកនៃមាតិកាក្រឡាបានទេ

    ការជំនួសច្រើនដោយប្រើមុខងារ LAMBDA ដដែលៗ

    សម្រាប់ Microsoftអតិថិជន 365 នាក់ Excel ផ្តល់នូវមុខងារពិសេសដែលអនុញ្ញាតឱ្យបង្កើតមុខងារផ្ទាល់ខ្លួនដោយប្រើភាសារូបមន្តប្រពៃណី។ បាទ ខ្ញុំកំពុងនិយាយអំពី LAMBDA ។ ភាពស្រស់ស្អាតនៃវិធីសាស្រ្តនេះគឺថាវាអាចបំប្លែងរូបមន្តដ៏វែង និងស្មុគស្មាញ ទៅជារូបមន្តបង្រួម និងសាមញ្ញបំផុត។ លើសពីនេះទៅទៀត វាអនុញ្ញាតឱ្យអ្នកបង្កើតមុខងារផ្ទាល់ខ្លួនរបស់អ្នកដែលមិនមាននៅក្នុង Excel ដែលជាអ្វីដែលពីមុនអាចធ្វើទៅបានតែជាមួយ VBA ប៉ុណ្ណោះ។

    សម្រាប់ព័ត៌មានលម្អិតអំពីការបង្កើត និងប្រើប្រាស់មុខងារ LAMBDA ផ្ទាល់ខ្លួន សូមពិនិត្យមើលការបង្រៀននេះ៖ របៀប ដើម្បីសរសេរមុខងារ LAMBDA នៅក្នុង Excel ។ នៅទីនេះ យើងនឹងពិភាក្សាអំពីឧទាហរណ៍ជាក់ស្តែងមួយចំនួន។

    អត្ថប្រយោជន៍ ៖ លទ្ធផលគឺមុខងារប្រើប្រាស់ដ៏ឆើតឆាយ និងសាមញ្ញអស្ចារ្យ មិនថាចំនួនគូជំនួសទេ

    គុណវិបត្តិ ៖ មាននៅក្នុង Excel 365 តែប៉ុណ្ណោះ; workbook-specific និងមិនអាចត្រូវបានប្រើប្រាស់ឡើងវិញនៅលើ workbooks ផ្សេងគ្នា

    ឧទាហរណ៍ 1. ស្វែងរក និងជំនួសពាក្យ/strings ច្រើនក្នុងពេលតែមួយ

    ដើម្បីជំនួសពាក្យ ឬអត្ថបទច្រើនក្នុងពេលតែមួយ យើងបានបង្កើតនូវ custom មុខងារ 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 ពិនិត្យមើលថាតើបញ្ជី ចាស់ មិនទទេទេ (ចាស់"")។ ប្រសិនបើពិត មុខងារ MultiReplace ត្រូវបានហៅ។ ប្រសិនបើ FALSE មុខងារត្រឡប់ text វាជាទម្រង់បច្ចុប្បន្នរបស់វា ហើយចេញ។

    រូបមន្តទីពីរប្រើតក្កវិជ្ជាបញ្ច្រាស៖ ប្រសិនបើ old គឺទទេ (old="") បន្ទាប់មកត្រឡប់ អត្ថបទ និងចេញ; បើមិនដូច្នេះទេ សូមហៅទៅ MultiReplace

    ផ្នែកដ៏លំបាកបំផុតត្រូវបានសម្រេច! អ្វីដែលអ្នកត្រូវធ្វើគឺដាក់ឈ្មោះមុខងារ MultiReplace នៅក្នុងកម្មវិធីគ្រប់គ្រងឈ្មោះ ដូចបង្ហាញក្នុងរូបថតអេក្រង់ខាងក្រោម។ សម្រាប់ការណែនាំលម្អិត សូមមើល របៀបដាក់ឈ្មោះមុខងារ LAMBDA។

    នៅពេលមុខងារទទួលបានឈ្មោះ អ្នកអាចប្រើវាបានដូចមុខងារផ្សេងទៀតដែលដាក់ក្នុងស្រាប់។

    ណាមួយនៃបំរែបំរួលរូបមន្តទាំងពីរដែលអ្នកជ្រើសរើស តាមទស្សនៈរបស់អ្នកប្រើចុងក្រោយ វាក្យសម្ព័ន្ធគឺសាមញ្ញដូចតទៅ៖

    MultiReplace(អត្ថបទចាស់ ថ្មី)

    កន្លែងណា៖

    • អត្ថបទ - ទិន្នន័យប្រភព
    • ចាស់ - តម្លៃដែលត្រូវស្វែងរក
    • ថ្មី - តម្លៃដែលត្រូវជំនួសដោយ

    ដោយលើកឧទាហរណ៍មុនបន្តិច យើងជំនួសមិនត្រឹមតែអក្សរកាត់ប្រទេសប៉ុណ្ណោះទេ ប៉ុន្តែអក្សរកាត់របស់រដ្ឋផងដែរ។ សម្រាប់ការនេះ វាយអក្សរកាត់ ( old values) ក្នុងជួរ D ចាប់ផ្តើមក្នុង D2 និងឈ្មោះពេញ ( new values) ក្នុងជួរឈរ E ចាប់ផ្តើមក្នុង E2។

    ក្នុង B2 បញ្ចូលមុខងារ MultiReplace៖

    =MultiReplace(A2:A10, D2, E2)

    ចុច Enter ហើយរីករាយនឹងលទ្ធផល :)

    របៀបដែលរូបមន្តនេះដំណើរការ

    តម្រុយនៃការយល់ដឹងអំពីរូបមន្តគឺការយល់ដឹងអំពីការបង្កើតឡើងវិញ។ នេះអាចស្តាប់ទៅស្មុគស្មាញ ប៉ុន្តែគោលការណ៍គឺសាមញ្ញណាស់។ ជាមួយគ្នា។ការធ្វើឡើងវិញ មុខងារ recursive ដោះស្រាយឧទាហរណ៍តូចមួយនៃបញ្ហាធំជាង។ ក្នុងករណីរបស់យើង អនុគមន៍ MultiReplace រង្វិលជុំតាមរយៈតម្លៃចាស់ និងថ្មី ហើយជាមួយនឹងរង្វិលជុំនីមួយៗអនុវត្តការជំនួសមួយ៖

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

    ដូចទៅនឹងអនុគមន៍ SUBSTITUTE ដែលត្រូវបានភ្ជាប់ លទ្ធផលនៃ SUBSTITUTE មុនក្លាយជាប៉ារ៉ាម៉ែត្រ text សម្រាប់ការជំនួសបន្ទាប់។ ម្យ៉ាងវិញទៀត នៅក្នុងការហៅជាបន្តបន្ទាប់គ្នានៃ MultiReplace មុខងារ SUBSTITUTE ដំណើរការមិនមែនជាខ្សែអក្សរដើមទេ ប៉ុន្តែលទ្ធផលនៃការហៅពីមុន។

    ដើម្បីគ្រប់គ្រងធាតុទាំងអស់នៅលើ <1 បញ្ជី>old យើងចាប់ផ្តើមជាមួយក្រឡាកំពូលបំផុត ហើយប្រើមុខងារ OFFSET ដើម្បីផ្លាស់ទី 1 ជួរចុះក្រោមជាមួយនឹងអន្តរកម្មនីមួយៗ៖

    OFFSET(old, 1, 0)

    ដូចគ្នានេះត្រូវបានធ្វើសម្រាប់ បញ្ជី ថ្មី៖

    OFFSET(new, 1, 0)

    រឿងសំខាន់គឺត្រូវផ្តល់ ចំណុចចេញ ដើម្បីការពារការហៅទូរសព្ទដដែលៗពីដំណើរការជារៀងរហូត។ វា​ត្រូវ​បាន​ធ្វើ​ដោយ​ជំនួយ​នៃ​អនុគមន៍ IF - ប្រសិនបើ​ក្រឡា old គឺ​ទទេ មុខងារ​នឹង​ត្រឡប់ text វា​ជា​ទម្រង់​បច្ចុប្បន្ន​របស់​វា ហើយ​ចេញ៖

    =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(text, old_chars, new_chars)

    Where:

    • Text - the original strings
    • ចាស់ - តួអក្សរដែលត្រូវស្វែងរក
    • ថ្មី - តួអក្សរដែលត្រូវជំនួសដោយ

    ដើម្បីផ្តល់ឱ្យវានូវការធ្វើតេស្តវាល ចូរយើងធ្វើអ្វីមួយដែលជារឿយៗត្រូវបានអនុវត្តលើទិន្នន័យដែលបាននាំចូល - ជំនួសសម្រង់ឆ្លាតវៃ និងសញ្ញាផ្កាយឆ្លាតវៃជាមួយនឹងសម្រង់ត្រង់ និងសញ្ញាផ្កាយត្រង់។

    ដំបូង យើងបញ្ចូលសម្រង់ឆ្លាតវៃ និងសញ្ញាផ្កាយឆ្លាតវៃនៅក្នុង D2 សម្រង់ត្រង់ និងសញ្ញាផ្កាយត្រង់នៅក្នុង E2 ដោយបំបែកតួអក្សរដោយដកឃ្លាសម្រាប់អានបានប្រសើរជាងមុន។ (នៅពេលយើងប្រើសញ្ញាកំណត់ដូចគ្នានៅក្នុងក្រឡាទាំងពីរ វានឹងមិនមានផលប៉ះពាល់អ្វីដល់លទ្ធផលនោះទេ។ Excel នឹងគ្រាន់តែជំនួសកន្លែងមួយដោយដកឃ្លា។)

    បន្ទាប់ពីនោះ យើងបញ្ចូលរូបមន្តនេះក្នុង B2៖

    =ReplaceChars(A2:A4, D2, E2)

    ហើយទទួលបានលទ្ធផលពិតប្រាកដដែលយើងកំពុងស្វែងរក៖

    វាក៏អាចវាយបញ្ចូលតួអក្សរដោយផ្ទាល់នៅក្នុងរូបមន្តផងដែរ។ ក្នុងករណីរបស់យើង គ្រាន់តែចាំថា "ស្ទួន" សម្រង់ត្រង់ដូចនេះ៖

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

    របៀបដែលរូបមន្តនេះដំណើរការ

    The ReplaceChars មុខងារដំណើរការតាមរយៈខ្សែអក្សរ old_chars និង new_chars ហើយធ្វើការជំនួសមួយក្នុងពេលតែមួយ ដោយចាប់ផ្តើមពីតួអក្សរទីមួយនៅខាងឆ្វេង។ ផ្នែកនេះត្រូវបានធ្វើដោយអនុគមន៍ SUBSTITUTE៖

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

    ជាមួយនឹងការធ្វើម្តងទៀតនីមួយៗ អនុគមន៍ RIGHT ដកតួអក្សរមួយចេញពីខាងឆ្វេងនៃទាំង old_chars និង new_chars strings ដូច្នេះ 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 string . ប្រសិនបើវាមិនទទេ មុខងារហៅខ្លួនឯង។ ដរាបណាតួអក្សរចុងក្រោយត្រូវបានជំនួស ដំណើរការសរសេរឡើងវិញបានបញ្ចប់ រូបមន្តនឹងត្រឡប់ អត្ថបទ វាជាទម្រង់បច្ចុប្បន្នរបស់វា ហើយចេញ។

    ចំណាំ។ ដោយសារមុខងារ SUBSTITUTE ដែលប្រើក្នុងរូបមន្តស្នូលរបស់យើងគឺ ប្រកាន់អក្សរតូចធំ ទាំង Lambdas ( MultiReplace និង ReplaceChars ) ចាត់ទុកអក្សរធំ និងអក្សរតូចជាតួអក្សរផ្សេងគ្នា។

    ស្វែងរក និងជំនួសដោយ UDF

    ក្នុងករណីដែលមុខងារ LAMBDA មិនមាននៅក្នុង Excel របស់អ្នក អ្នកអាចសរសេរមុខងារដែលកំណត់ដោយអ្នកប្រើប្រាស់សម្រាប់ការជំនួសច្រើនតាមវិធីប្រពៃណីដោយប្រើ VBA ។

    ដើម្បីសម្គាល់ UDF ពីមុខងារ MultiReplace ដែលកំណត់ដោយ LAMBDA យើងនឹងដាក់ឈ្មោះវាខុសគ្នា និយាយថា MassReplace ។ កូដនៃមុខងារមានដូចខាងក្រោម៖

    Function MassReplace(InputRng As Range, FindRng As Range, ReplaceRng As Range) As Variant () DimarRes() ជាអារេវ៉ារ្យង់ដើម្បីរក្សាទុកលទ្ធផល Dim arSearchReplace(), sTmp As String 'array កន្លែងដែលត្រូវរក្សាទុកការស្វែងរក/ជំនួសគូ ខ្សែអក្សរបណ្តោះអាសន្ន Dim iFindCurRow, cntFindRows As Long 'សន្ទស្សន៍នៃជួរបច្ចុប្បន្ននៃអារេ SearchReplace រាប់ នៃជួរ Dim iInputCurRow, iInputCurCol, cntInputRows, cntInputCols As Long 'លិបិក្រមនៃជួរបច្ចុប្បន្នក្នុងជួរប្រភព លិបិក្រមនៃជួរឈរបច្ចុប្បន្នក្នុងជួរប្រភព ចំនួនជួរដេក ចំនួននៃជួរឈរ 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 ដល់ 2) 'រៀបចំអារេនៃការស្វែងរក/ជំនួសគូសម្រាប់ iFindCurntRow iFindCurRow, 1) = FindRng.Cells(iFindCurRow, 1).តម្លៃ arSearchReplace(iFindCurRow, 2) = ReplaceRng.Cells(iFindCurRow, 1).តម្លៃបន្ទាប់ 'ការស្វែងរក និងជំនួសក្នុងជួរប្រភពសម្រាប់ iInputCurRow =InputCurRow 1 ទៅ cntInputCols sTm p = InputRng.Cells(iInputCurRow, iInputCurCol)។តម្លៃ 'ការជំនួសការស្វែងរក/ជំនួសគូទាំងអស់ក្នុងក្រឡានីមួយៗ សម្រាប់ iFindCurRow = 1 ដើម្បី cntFindRows sTmp = Replace(sTmp, arSearchReplace(iFindCurRow, 1), ស្វែងរក 2) NextarCurRow (iInputCurRow, iInputCurCol) = sTmp Next Next MassReplace = arRes End Function

    ដូចមុខងារដែលកំណត់ដោយ LAMBDA UDFs គឺ workbook-wide ។ នោះមានន័យថា

    ម៉ៃឃើល ប្រោន ជា​អ្នក​ចូល​ចិត្ត​ផ្នែក​បច្ចេកវិទ្យា​ដែល​មាន​ចំណង់​ចំណូល​ចិត្ត​ក្នុង​ការ​សម្រួល​ដំណើរការ​ស្មុគស្មាញ​ដោយ​ប្រើ​ឧបករណ៍​កម្មវិធី។ ជាមួយនឹងបទពិសោធន៍ជាងមួយទស្សវត្សនៅក្នុងឧស្សាហកម្មបច្ចេកវិទ្យា គាត់បានពង្រឹងជំនាញរបស់គាត់នៅក្នុង Microsoft Excel និង Outlook ក៏ដូចជា Google Sheets និង Docs ។ ប្លក់របស់ម៉ៃឃើលគឺឧទ្ទិសដល់ការចែករំលែកចំណេះដឹង និងជំនាញរបស់គាត់ជាមួយអ្នកដទៃ ដោយផ្តល់នូវគន្លឹះ និងមេរៀនដែលងាយស្រួលធ្វើតាមសម្រាប់ការកែលម្អផលិតភាព និងប្រសិទ្ធភាព។ មិនថាអ្នកជាអ្នកជំនាញ ឬអ្នកចាប់ផ្តើមដំបូងទេ ប្លក់របស់ Michael ផ្តល់នូវការយល់ដឹងដ៏មានតម្លៃ និងដំបូន្មានជាក់ស្តែងសម្រាប់ការទទួលបានអត្ថប្រយោជន៍ច្រើនបំផុតពីឧបករណ៍កម្មវិធីសំខាន់ៗទាំងនេះ។