តារាងមាតិកា
ចង់ដោះស្រាយចន្លោះប្រហោងក្នុងវិធីដែលមានប្រសិទ្ធភាពបំផុត? ប្រើកន្សោមធម្មតាដើម្បីលុបដកឃ្លាទាំងអស់ក្នុងក្រឡាមួយ ជំនួសចន្លោះច្រើនដោយតួអក្សរតែមួយ កាត់ចន្លោះរវាងលេខតែប៉ុណ្ណោះ និងច្រើនទៀត។
ការបញ្ចូលទិន្នន័យណាមួយដែលអ្នកកំពុងប្រើ អ្នកស្ទើរតែមិនជួបប្រទះនឹង សំណុំទិន្នន័យដោយគ្មានចន្លោះ។ ក្នុងករណីភាគច្រើន ចន្លោះប្រហោងគឺល្អ - អ្នកប្រើវាដើម្បីបំបែកបំណែកនៃព័ត៌មានដោយមើលឃើញ ដើម្បីធ្វើឱ្យវាកាន់តែងាយស្រួលក្នុងការយល់ឃើញ។ ទោះយ៉ាងណាក៏ដោយ ក្នុងស្ថានភាពខ្លះ វាអាចនឹងក្លាយទៅជាអាក្រក់ - ចន្លោះបន្ថែមអាចធ្វើឲ្យរូបមន្តរបស់អ្នករញ៉េរញ៉ៃ និងធ្វើឱ្យសន្លឹកកិច្ចការរបស់អ្នកស្ទើរតែមិនអាចគ្រប់គ្រងបាន។
ហេតុអ្វីត្រូវប្រើកន្សោមធម្មតាដើម្បីកាត់ដកឃ្លាក្នុង Excel?
មុននឹងយើងចូលទៅក្នុងភាពមិនច្បាស់លាស់នៃការប្រើប្រាស់កន្សោមធម្មតាដើម្បីលុបដកឃ្លាក្នុងសន្លឹកកិច្ចការ Excel ខ្ញុំចង់ដោះស្រាយសំណួរដែលគិតដល់ដំបូង - ហេតុអ្វីបានជាយើងត្រូវការ regexes នៅពេលដែល Excel មាន TRIM រួចហើយ មុខងារ?
ដើម្បីស្វែងយល់ពីភាពខុសប្លែកគ្នា សូមមើលអ្វីដែលត្រូវបានចាត់ទុកថាជាកន្លែងដកឃ្លានៅក្នុងករណីនីមួយៗ៖
- មុខងារ TRIM ដែលភ្ជាប់មកជាមួយអាចដកចេញបានតែ តួអក្សរដកឃ្លា ដែលមានតម្លៃ 32 នៅក្នុងប្រព័ន្ធ ASCII 7 ប៊ីត។
- កន្សោមធម្មតាអាចកំណត់អត្តសញ្ញាណទម្រង់ផ្សេងគ្នាមួយចំនួននៃកន្លែងទំនេរដូចជា ចន្លោះ ( ), ផ្ទាំង (\ t), carriage return (\ r) និង ថ្មី បន្ទាត់ (\n) លើសពីនេះ វាមាន តួអក្សរដកឃ្លា (\s) ដែលត្រូវគ្នានឹងប្រភេទទាំងអស់នេះ ហើយមានប្រយោជន៍ខ្លាំងណាស់សម្រាប់ការសម្អាតធាតុចូលឆៅ។ទិន្នន័យ។
ដោយដឹងច្បាស់ថាមានអ្វីកើតឡើងនៅពីក្រោយឆាក វាជាការងាយស្រួលក្នុងការដោះស្រាយដំណោះស្រាយមែនទេ?
របៀបបើកកន្សោមធម្មតានៅក្នុង Excel
វាគឺជាការពិតដែលគេស្គាល់ថា Excel ក្រៅប្រអប់មិនគាំទ្រកន្សោមធម្មតាទេ។ ដើម្បីបើកពួកវា អ្នកត្រូវបង្កើតមុខងារ VBA ផ្ទាល់ខ្លួន។ ជាសំណាងល្អ យើងមានមួយរួចហើយ ដែលមានឈ្មោះថា RegExpReplace ។ រង់ចាំ ហេតុអ្វីបានជា "ជំនួស" ខណៈពេលដែលយើងកំពុងនិយាយអំពីការដកចេញ? នៅក្នុងភាសា Excel "remove" គឺគ្រាន់តែជាពាក្យមួយផ្សេងទៀតសម្រាប់ "replace with an empty string" :)
ដើម្បីបន្ថែមមុខងារទៅ Excel របស់អ្នក គ្រាន់តែចម្លងកូដរបស់វាចេញពីទំព័រនេះ បិទភ្ជាប់វានៅក្នុងកម្មវិធីនិពន្ធ VBA ហើយរក្សាទុកឯកសាររបស់អ្នកជា សៀវភៅការងារដែលអាចប្រើម៉ាក្រូ (.xlsm)។
នេះគឺជាវាក្យសម្ព័ន្ធនៃមុខងារសម្រាប់ឯកសារយោងរបស់អ្នក៖
RegExpReplace(អត្ថបទ លំនាំ ការជំនួស [instance_num]] , [match_case])អាគុយម៉ង់បីដំបូងត្រូវបានទាមទារ ពីរចុងក្រោយគឺស្រេចចិត្ត។
កន្លែងណា៖
- អត្ថបទ - ខ្សែអក្សរដើមទៅ ស្វែងរកក្នុង។
- លំនាំ - regex ដែលត្រូវស្វែងរក។
- ការជំនួស - អត្ថបទដែលត្រូវជំនួស។ ដើម្បី លុប ដកឃ្លា អ្នកនឹងកំណត់អាគុយម៉ង់នេះទៅជា៖
- ខ្សែអក្សរទទេ ("") ដើម្បីកាត់ដកឃ្លាទាំងអស់យ៉ាងពិតប្រាកដ<11
- ដកឃ្លា តួអក្សរ (" ") ដើម្បីជំនួសចន្លោះច្រើនដោយតួអក្សរដកឃ្លាតែមួយ
សម្រាប់ព័ត៌មានបន្ថែម សូមមើលមុខងារ RegExpReplace។
របៀបលុបដកឃ្លាដោយប្រើ regex - ឧទាហរណ៍
ជាមួយ មុខងារ RegExpReplace ត្រូវបានបន្ថែមទៅសៀវភៅការងាររបស់អ្នក សូមដោះស្រាយសេណារីយ៉ូផ្សេងៗម្តងមួយៗ។
លុបដកឃ្លាទាំងអស់ដោយប្រើ regex
ដើម្បីលុបដកឃ្លាទាំងអស់ក្នុងខ្សែអក្សរ អ្នកគ្រាន់តែស្វែងរកតួអក្សរដកឃ្លាណាមួយ រួមទាំង ដកឃ្លា ផ្ទាំងមួយ ការបញ្ជូនត្រលប់មកវិញ និងផ្ទាំងព័ត៌មាន ហើយជំនួសពួកវាដោយខ្សែអក្សរទទេ ("")។
លំនាំ : \s+
ការជំនួស : ""
សន្មត់ថាខ្សែប្រភពគឺនៅក្នុង A5 រូបមន្តនៅក្នុង B5 គឺ:
=RegExpReplace(A5, "\s+", "")
ដើម្បីធ្វើឱ្យវាកាន់តែងាយស្រួលក្នុងការគ្រប់គ្រងលំនាំរបស់អ្នក អ្នកអាចបញ្ចូល regex ក្នុងក្រឡាដែលបានកំណត់ជាមុន ហើយផ្គត់ផ្គង់វាទៅរូបមន្តដោយប្រើឯកសារយោងដាច់ខាតដូចជា $A$2 ដូច្នេះអាសយដ្ឋានក្រឡានឹងនៅតែមិនផ្លាស់ប្តូរនៅពេលចម្លងរូបមន្តចុះក្រោមជួរឈរ។
=RegExpReplace(A5, $A$2, "")
ដកដកឃ្លាច្រើនជាងមួយ
ដើម្បីលុប ដកឃ្លាបន្ថែម (ឧ. n ចន្លោះជាប់គ្នាមួយ) ប្រើ regex ដូចគ្នា \s+ ប៉ុន្តែជំនួសការផ្គូផ្គងដែលបានរកឃើញដោយតួអក្សរដកឃ្លាតែមួយ។
លំនាំ : \s+
ការជំនួស : "
=RegExpReplace(A5, "\s+", " ")
សូមយកចិត្តទុកដាក់ថារូបមន្តនេះរក្សាតួអក្សរដកឃ្លាមួយមិនត្រឹមតែរវាងខាងក្រោមសំណុំទិន្នន័យ ឧបមាថាអ្នកចង់កាត់បន្ថយចន្លោះនាំមុខ/បន្ទាប់ទាំងអស់ និងទាំងអស់លើកលែងតែចន្លោះមួយនៅចន្លោះមួយ ដោយរក្សាបន្ទាត់ជាច្រើននៅដដែល។ ដើម្បីបំពេញភារកិច្ច អ្នកនឹងត្រូវការមុខងារ RegExpReplace ពីរផ្សេងគ្នា។
មុខងារទីមួយជំនួសចន្លោះច្រើនដោយតួអក្សរដកឃ្លាតែមួយ។
=RegExpReplace(A5, " +", " ")
មួយទៀតដកឃ្លា ពីដើម និងចុងបញ្ចប់នៃបន្ទាត់មួយ៖
=RegExpReplace(A5, "^ +| +$", "")
គ្រាន់តែដាក់មុខងារទាំងពីរទៅមួយទៀត៖
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
ហើយអ្នកនឹងទទួលបាន លទ្ធផលល្អឥតខ្ចោះ៖
Regex ដើម្បីជំនួសចន្លោះច្រើនដោយតួអក្សរមួយ
ក្នុងករណីដែលអ្នកចង់ដកដកឃ្លាទាំងអស់ចេញពីខ្សែអក្សរ ហើយជំនួសក្រុមនីមួយៗនៃចន្លោះជាប់គ្នា ជាមួយនឹងតួអក្សរជាក់លាក់មួយ នេះជាអ្វីដែលអ្នកត្រូវធ្វើ៖
ដំបូង ប្រើ regex នេះដើម្បីកាត់បន្ថយចន្លោះដែលនាំមុខ និងបន្តបន្ទាប់៖
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
បន្ទាប់មក បម្រើមុខងារខាងលើ ទៅអាគុយម៉ង់ text នៃ RegExpReplace ផ្សេងទៀតដែលជំនួសកន្លែងទំនេរជាប់គ្នាមួយ ឬច្រើនជាមួយនឹងតួអក្សរដែលអ្នកបញ្ជាក់ ឧ. a សហសញ្ញា៖
លំនាំ : \s+
ការជំនួស : -
សន្មត់ថាខ្សែអក្សរប្រភពស្ថិតនៅក្នុង A8 រូបមន្ត យករូបរាងនេះ៖
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
ឬអ្នកអាចបញ្ចូលលំនាំ និងការជំនួសនៅក្នុងក្រឡាដាច់ដោយឡែក ដូចបានបង្ហាញក្នុងរូបថតអេក្រង់៖
Regex ដើម្បីលុបបន្ទាត់ទទេ
នេះគឺជាសំណួរដែលអ្នកប្រើប្រាស់ដែលមានបន្ទាត់ច្រើនក្នុងក្រឡាមួយសួរញឹកញាប់៖ "មានបន្ទាត់ទទេជាច្រើននៅក្នុងក្រឡារបស់ខ្ញុំ។ តើមានវិធីណាដើម្បីទទួលបានកម្ចាត់ពួកវាក្រៅពីឆ្លងកាត់ក្រឡានីមួយៗ ហើយលុបបន្ទាត់នីមួយៗដោយដៃ?” ចម្លើយ៖ នោះជាការងាយស្រួល!
ដើម្បីផ្គូផ្គងបន្ទាត់ទទេដែលមិនមានតួអក្សរតែមួយចាប់ពីដើម ^ នៃបន្ទាត់បច្ចុប្បន្នរហូតដល់ បន្ទាត់បន្ទាប់ \n, regex គឺ៖
លំនាំ : ^\n
ប្រសិនបើបន្ទាត់ទទេដែលមើលឃើញរបស់អ្នកមានដកឃ្លា ឬផ្ទាំង សូមប្រើកន្សោមធម្មតានេះ៖
លំនាំ : ^[\t]*\n
គ្រាន់តែជំនួស regex ដោយខ្សែអក្សរទទេ ដោយប្រើរូបមន្តនេះ ហើយបន្ទាត់ទទេទាំងអស់នឹងរលាយបាត់ក្នុងពេលតែមួយ!
=RegExpReplace(A5, $A$2, "")
ការដកដកឃ្លាចេញដោយប្រើឧបករណ៍ RegEx
ឧទាហរណ៍ខាងលើបានបង្ហាញឱ្យឃើញតែផ្នែកតូចមួយនៃលទ្ធភាពដ៏អស្ចារ្យដែលផ្តល់ដោយ regexes ។ ជាអកុសលមិនមែនទាំងអស់ទេ លក្ខណៈពិសេសនៃកន្សោមធម្មតាបុរាណមាននៅក្នុង VBA ។
ជាសំណាងល្អ ឧបករណ៍ RegEx រួមបញ្ចូលជាមួយឈុត Ultimate របស់យើងគឺមិនមានដែនកំណត់ទាំងនេះទេ ដោយសារពួកវាត្រូវបានដំណើរការដោយម៉ាស៊ីន .NET RegEx របស់ Microsoft ។ វាអនុញ្ញាតឱ្យអ្នកបង្កើតគំរូស្មុគ្រស្មាញបន្ថែមទៀតដែល មិនត្រូវបានគាំទ្រដោយ VBA RegExp. Belo w អ្នកនឹងឃើញឧទាហរណ៍នៃកន្សោមធម្មតាបែបនេះ។
Regex ដើម្បីដកចន្លោះរវាងលេខ
នៅក្នុងខ្សែអក្សរអក្សរក្រម ឧបមាថាអ្នកចង់ដកដកឃ្លារវាងលេខតែប៉ុណ្ណោះ ដូច្នេះខ្សែអក្សរដូចជា "A 1 2 B" ក្លាយជា "A 12 B" : (?<=\d)\s+(?=\d)
ដើម្បីបង្កើតរូបមន្តផ្អែកលើនៅលើ regexes ខាងលើ នេះជាជំហានងាយៗចំនួនពីរដើម្បីអនុវត្ត៖
- នៅលើផ្ទាំង Ablebits Data ក្នុងក្រុម Text ចុច Regex Tools .
- នៅលើបន្ទះ Regex Tools ជ្រើសរើសប្រភពទិន្នន័យ បញ្ចូល regex របស់អ្នក ជ្រើសរើស Remove ជម្រើស ហើយចុច Remove ។
ដើម្បីទទួលបានលទ្ធផលជារូបមន្ត មិនមែនតម្លៃ កុំភ្លេចដាក់សញ្ញាធីកក្នុងប្រអប់ Insert as a formula ។
បន្តិចទៀតនេះ អ្នកនឹងឃើញមុខងារ AblebitsRegexRemove ដែលបានបញ្ចូលក្នុងជួរឈរថ្មីនៅខាងស្តាំនៃទិន្នន័យដើម។
ជាជម្រើស អ្នកអាចបញ្ចូល regex នៅក្នុងក្រឡាមួយចំនួន និយាយថា A5 ហើយបញ្ចូលរូបមន្តដោយផ្ទាល់ក្នុងក្រឡាមួយដោយប្រើប្រអប់ បញ្ចូលមុខងារ ដែល AblebitsRegexRemove ត្រូវបានចាត់ថ្នាក់ក្រោម AblebitsUDFs ។
ដោយសារមុខងារនេះត្រូវបានរចនាឡើងយ៉ាងពិសេសសម្រាប់ការដកខ្សែចេញ វាទាមទារតែអាគុយម៉ង់ពីរប៉ុណ្ណោះ - ខ្សែអក្សរបញ្ចូល និង regex៖
=AblebitsRegexRemove(A5, $A$2)
នោះហើយជាវិធីដកដកឃ្លានៅក្នុង Excel ដោយប្រើកន្សោមធម្មតា។ ខ្ញុំសូមអរគុណចំពោះការអាន ហើយទន្ទឹងរង់ចាំជួបអ្នកនៅលើប្លក់របស់យើងនៅសប្តាហ៍ក្រោយ!
ការទាញយកដែលមាន
លុបដកឃ្លាដោយប្រើ regex - ឧទាហរណ៍ (ឯកសារ .xlsm)
ឈុតចុងក្រោយ - កំណែសាកល្បង (ឯកសារ .exe)
ពាក្យក៏ប៉ុន្តែនៅដើមនិងចុងនៃខ្សែអក្សរមួយដែលមិនល្អ។ ដើម្បីកម្ចាត់ដកឃ្លាដែលនាំមុខ និងតាមពីក្រោយ សូមដាក់រូបមន្តខាងលើទៅក្នុងមុខងារ RegExpReplace មួយផ្សេងទៀតដែលដកចន្លោះពីដើម និងចុង៖ =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex ទៅ ដកដកឃ្លានាំមុខ និងតាមក្រោយ
ដើម្បីស្វែងរកចន្លោះទទេនៅដើម ឬចុងបន្ទាត់ សូមប្រើការចាប់ផ្តើម ^ និងបញ្ចប់ $យុថ្កា។
នាំមុខ ដកឃ្លា៖
លំនាំ : ^[\s]+
បន្ទាប់ ដកឃ្លា៖
លំនាំ : [\s ]+$
នាំមុខ និង បន្ទាប់ ដកឃ្លា៖
លំនាំ : ^[\s]+