តារាងមាតិកា
ការបង្រៀនបង្ហាញពីរបៀបដើម្បីរំលេចពាក្យស្ទួន ឬខ្សែអក្សរនៅក្នុងក្រឡាដោយប្រើ VBA។
ការធ្វើទ្រង់ទ្រាយតាមលក្ខខណ្ឌ Excel ធ្វើឱ្យវាអាចបន្លិចពាក្យស្ទួនតាមវិធីដែលអ្នកអាចគិតបាន៖ ដោយមាន ឬគ្មានការកើតឡើងលើកទី 1 ក្នុងជួរឈរតែមួយ ឬជួរឈរច្រើន ក្រឡាស្ទួនជាប់គ្នា និងជួរទាំងមូលដោយផ្អែកលើតម្លៃដូចគ្នាបេះបិទនៅក្នុងជួរឈរគន្លឹះ។ ប៉ុន្តែជាធម្មតាមាន "ប៉ុន្តែ" ។ ច្បាប់ទម្រង់តាមលក្ខខណ្ឌដំណើរការលើកម្រិតក្រឡាមួយ ខណៈពេលដែលអ្នកប្រហែលជាចង់រំលេចអត្ថបទស្ទួនជាជាងក្រឡាទាំងមូល។ នេះអាចត្រូវបានធ្វើតែជាមួយម៉ាក្រូប៉ុណ្ណោះ។ ទោះបីជាអ្នកមិនមានបទពិសោធន៍ជាមួយ VBA ក៏ដោយ សូមកុំប្រញាប់បិទទំព័រនេះ។ នៅទីនេះ អ្នកនឹងឃើញឧទាហរណ៍កូដដែលត្រៀមរួចជាស្រេចសម្រាប់ប្រើ និងការណែនាំលម្អិតអំពីរបៀបប្រើពួកវានៅក្នុងសន្លឹកកិច្ចការរបស់អ្នក។
រំលេចពាក្យស្ទួនក្នុងក្រឡាដែលមិនអើពើករណីអត្ថបទ
ឧទាហរណ៍នេះបង្ហាញពីរបៀបដាក់ស្រមោលពាក្យស្ទួន ឬខ្សែអក្សរក្នុងក្រឡាក្នុងពណ៌ពុម្ពអក្សរពណ៌ក្រហម ដូចបង្ហាញក្នុងរូបភាពខាងក្រោម។ សូមកត់សម្គាល់ថាអក្សរតូច និងអក្សរធំត្រូវបានចាត់ទុកជាតួអក្សរដូចគ្នា។ ឧទាហរណ៍ ពណ៌ទឹកក្រូច , ORANGE និង ពណ៌ទឹកក្រូច ត្រូវបានចាត់ទុកថាជាពាក្យដូចគ្នា។
The កូដរបស់ម៉ាក្រូមានដូចខាងក្រោម៖
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "បញ្ចូលសញ្ញាកំណត់ដែលបំបែកតម្លៃក្នុងក្រឡាមួយ", "Delimiter", ", ") សម្រាប់ក្រឡានីមួយៗនៅក្នុងApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive As Boolean = True ) Dim text as String Dim words() As String String Dim wordIndex, matchCount, positionInText as Integer If CaseSensitive បន្ទាប់មក words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 ពាក្យ = words(wordIndex) matchCount = 0 សម្រាប់ nextWordIndex = wordIndex + 1 To UBound (words) ប្រសិនបើ word = words(nextWordIndex) បន្ទាប់មក matchCount = matchCount + 1 End ប្រសិនបើ Next NextWordIndex ប្រសិនបើ matchCount > 0 បន្ទាប់មក text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) ប្រសិនបើ (words(Index) = word) បន្ទាប់មក Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End ប្រសិនបើ Next wordIndex End Subបន្លិចអត្ថបទស្ទួនក្នុងក្រឡាដែលប្រកាន់អក្សរតូចធំ
ក្នុងស្ថានភាពភាគច្រើន យើងមានទំនោរមិនអើពើករណីអក្សរនៅពេលធ្វើការជាមួយធាតុអត្ថបទក្នុង Excel ។ ទោះយ៉ាងណាក៏ដោយ នៅក្រោមកាលៈទេសៈណាមួយ ករណីអត្ថបទមានសារៈសំខាន់។ ឧទាហរណ៍ ប្រសិនបើអ្នកកំពុងដោះស្រាយជាមួយលេខសម្គាល់ ពាក្យសម្ងាត់ ឬកំណត់ត្រាផ្សេងទៀតនៃប្រភេទនោះ ខ្សែអក្សរដូចជា 1-AA , 1-aa និង 1-Aa មិនត្រូវបានចម្លង និងមិនគួរត្រូវបានបន្លិច៖
នៅក្នុងករណីនេះប្រើកំណែខាងក្រោមនៃកូដ៖
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that separates values in a cell", "Delimiter", ", ") សម្រាប់គ្នា Cell in Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " " , Optional CaseSensitive As Boolean = True ) Dim text as String Dim words() As String word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive បន្ទាប់មក words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound ( words) - 1 ពាក្យ = words(wordIndex) matchCount = 0 សម្រាប់ nextWordIndex = wordIndex + 1 To UBound (words) ប្រសិនបើ word = words(nextWordIndex) បន្ទាប់មក matchCount = matchCount + 1 End ប្រសិនបើ Next NextWordIndex ប្រសិនបើ matchCount > 0 បន្ទាប់មក text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) ប្រសិនបើ (words(Index) = word) បន្ទាប់មក Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Subរបៀបប្រើម៉ាក្រូដើម្បីរំលេចពាក្យស្ទួនក្នុង Excel
ប្រសិនបើអ្នកជាអ្នកចាប់ផ្តើមប្រើ VBA ការណែនាំជាជំហានៗខាងក្រោមនឹងផ្តល់ភាពងាយស្រួលដល់អ្នក . អ្នកប្រើប្រាស់ដែលមានបទពិសោធន៍អាចគ្រាន់តែជ្រើសរើសតំណទាញយក ហើយរំលងនៅសល់ :)
បន្ថែមកូដទៅសៀវភៅការងាររបស់អ្នក
អ្នកចាប់ផ្តើមជាមួយនឹងការបញ្ចូលកូដម៉ាក្រូនៅក្នុងសៀវភៅការងារ Excel របស់អ្នក។ នេះជារបៀប៖
- បើកសៀវភៅការងារដែលអ្នកចង់រំលេចព័ត៌មានក្លែងក្លាយ។
- ចុច Alt + F11 ដើម្បីបើកកម្មវិធីនិពន្ធ Visual Basic ។
- នៅលើបន្ទះខាងឆ្វេង ចុចកណ្ដុរស្ដាំលើ ThisWorkbook ហើយជ្រើសរើស Insert > Module ពីម៉ឺនុយបរិបទ។
- Paste the code in the Code window.
- ដើម្បីរក្សាម៉ាក្រូសម្រាប់ការប្រើប្រាស់នាពេលអនាគត ត្រូវប្រាកដថារក្សាទុកសៀវភៅការងាររបស់អ្នកជាឯកសារ .xlsm ដែលបានបើកម៉ាក្រូ។
ជាជម្រើស អ្នកអាចទាញយកសៀវភៅការងារគំរូរបស់យើង ហើយដំណើរការម៉ាក្រូពីទីនោះ។ សៀវភៅការងារគំរូមានម៉ាក្រូដូចខាងក្រោម៖
- HighlightDupesCaseInsensitive - ស្រមោលស្ទួនក្នុងក្រឡាដោយមិនអើពើករណីអក្សរ។
- HighlightDupesCaseSensitive - បន្លិច dupes ក្នុងក្រឡាដោយពិចារណាលើករណីអក្សរ។
សម្រាប់ព័ត៌មានបន្ថែម សូមមើល របៀបបញ្ចូលកូដ VBA ក្នុង Excel។
ដំណើរការម៉ាក្រូ
ជាមួយលេខកូដ បានបន្ថែមទៅសៀវភៅការងារផ្ទាល់ខ្លួនរបស់អ្នក ឬឯកសារគំរូរបស់យើងដែលបានទាញយក និងបើកដំណើរការម៉ាក្រូតាមរបៀបនេះ៖
- នៅក្នុងសន្លឹកកិច្ចការរបស់អ្នក សូមជ្រើសរើសក្រឡាដែលអ្នកចង់រំលេចអត្ថបទស្ទួន។ នេះអាចជាជួរមួយ ឬច្រើនជួរដែលមិននៅជាប់គ្នា។
- ចុច Alt + F8 ។
- ជ្រើសរើសម៉ាក្រូដែលចាប់អារម្មណ៍ ហើយចុច រត់ ។
- ម៉ាក្រូនឹងសួរអ្នកឱ្យបញ្ជាក់អ្នកកំណត់ព្រំដែនដែលបំបែកតម្លៃនៅក្នុងក្រឡាដែលបានជ្រើសរើស។ កំណត់ព្រំដែនកំណត់ជាមុន (សញ្ញាក្បៀស និងចន្លោះនៅក្នុងករណីរបស់យើង) នឹងបង្ហាញនៅក្នុងប្រអប់បញ្ចូលដោយស្វ័យប្រវត្តិ។ អាស្រ័យលើតម្រូវការរបស់អ្នក អ្នកអាចទុកសញ្ញាកំណត់លំនាំដើម ឬវាយអក្សរផ្សេង ហើយបន្ទាប់មកចុចយល់ព្រម។
មួយសន្ទុះក្រោយមក ខ្សែអក្សរស្ទួនទាំងអស់នៅក្នុងការដែលបានជ្រើសរើស ក្រឡានឹងត្រូវបានដាក់ស្រមោលជាពណ៌ក្រហម (ឬពណ៌ពុម្ពអក្សរណាដែលត្រូវបានកំណត់ក្នុងកូដរបស់អ្នក)។
គន្លឹះ។ ដើម្បី លុបលេខស្ទួន នៅក្នុងក្រឡាមួយយ៉ាងឆាប់រហ័ស អ្នកអាចប្រើ Remove Duplicate Substrings ដែលជាឧបករណ៍សន្សំពេលវេលាមួយក្នុងចំណោមឧបករណ៍ជាច្រើនដែលរួមបញ្ចូលនៅក្នុង Ultimate Suite របស់យើង។
របៀបកែតម្រូវកូដសម្រាប់តម្រូវការរបស់អ្នក
ជាមួយនឹងកំណត់ចំណាំការប្រើប្រាស់ទាំងនេះ និងចំណេះដឹងជាមូលដ្ឋាននៃ VBA (ឬគ្រាន់តែធ្វើតាមការណែនាំខាងក្រោមយ៉ាងដិតដល់) អ្នកអាចកែប្រែកូដបានយ៉ាងងាយស្រួលស្របតាមតម្រូវការរបស់អ្នក។
ដាក់នៅលើម៉ូឌុលដូចគ្នា
ដូចដែលអ្នកអាចកត់សម្គាល់ ម៉ាក្រូទាំងពីរ ( HighlightDupesCaseSensitive និង HighlightDupesCaseInsensitive ) ហៅមុខងារ HighlightDupeWordsInCell ។ ភាពខុសគ្នារវាងម៉ាក្រូទាំងពីរខាងលើគឺមានតែនៅក្នុងប៉ារ៉ាម៉ែត្រទី 3 (CaseSensitive) ដែលបានបញ្ជូនទៅកាន់មុខងារនោះប៉ុណ្ណោះ។
សម្រាប់ការស្វែងរកដែលប្រកាន់អក្សរតូចធំ វាត្រូវបានកំណត់ទៅ TRUE៖
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
សម្រាប់ការស្វែងរកដែលមិនប្រកាន់អក្សរតូចធំ វាត្រូវបានកំណត់ទៅជា FALSE៖
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
ដើម្បីឱ្យម៉ាក្រូដំណើរការ កូដនៃមុខងារ HighlightDupeWordsInCell ត្រូវតែដាក់នៅលើ ម៉ូឌុលដូចគ្នានឹងម៉ាក្រូ។
អ្នកកំណត់ព្រំដែន
នៅពេលដំណើរការ ម៉ាក្រូនឹងសួរអ្នកឱ្យបញ្ជាក់សញ្ញាកំណត់ដែលបំបែកពាក្យ/ខ្សែអក្សរនៅក្នុងក្រឡាដែលបានជ្រើសរើស។ ការកំណត់ព្រំដែនលំនាំដើមគឺជាសញ្ញាក្បៀស និងដកឃ្លា (", ") ហើយវាត្រូវបានកំណត់ជាមុននៅក្នុងប្រអប់បញ្ចូល៖
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
នៅក្នុងកូដរបស់អ្នក អ្នកអាចប្រើប្រាស់តួអក្សរផ្សេងទៀតដោយសេរី។ ជាការកំណត់ព្រំដែនដែលបានកំណត់ជាមុន។
ពណ៌
តាមលំនាំដើម មុខងារ HighlightDupeWordsInCell ស្រមោលស្ទួនជាពណ៌ពុម្ពអក្សរពណ៌ក្រហម។ ពណ៌ត្រូវបានកំណត់នៅក្នុងបន្ទាត់នេះ៖
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
នៅទីនេះ vbRed គឺជាប្រភេទពណ៌ VBA ថេរ។ ដើម្បីបង្ហាញការអាប់ដេតក្នុងពណ៌ផ្សេង អ្នកអាចជំនួស vbRed ដោយថេរផ្សេងទៀតដូចជា vbGreen, vbYellow, vbBlue ជាដើម។ T គាត់បញ្ជីនៃថេរពណ៌ដែលគាំទ្រអាចរកបាននៅទីនេះ។
នោះហើយជា របៀបបន្លិចពាក្យស្ទួនក្នុងក្រឡា Excel ។ ខ្ញុំសូមអរគុណចំពោះការអាន ហើយសង្ឃឹមថានឹងបានជួបអ្នកនៅលើប្លក់របស់យើងនៅសប្តាហ៍ក្រោយ!
ការទាញយកដែលមាន
ឧទាហរណ៍កូដដើម្បីរំលេចការស្ទួននៅក្នុងក្រឡាមួយ (ឯកសារ .xlsm)
Ultimate ឈុតដែលមានមុខងារពេញលេញរយៈពេល 14 ថ្ងៃ (ឯកសារ .exe)