Excel ဆဲလ်တွင် ပွားနေသော စာသား/စကားလုံးများကို မီးမောင်းထိုးပြနည်း

  • ဒါကိုမျှဝေပါ။
Michael Brown

သင်ခန်းစာတွင် VBA ကို အသုံးပြု၍ ဆဲလ်တစ်ခုအတွင်း ပွားနေသော စကားလုံးများ သို့မဟုတ် စာသားစာကြောင်းများကို ပေါ်လွင်အောင်ပြုလုပ်နည်းကို ပြသထားသည်။

Excel Conditional Formatting သည် သင်စဉ်းစားနိုင်သမျှနည်းလမ်းဖြင့် ထပ်တူများကို မီးမောင်းထိုးပြနိုင်စေသည်- ကော်လံတစ်ခုထဲ သို့မဟုတ် ကော်လံအများအပြားတွင် ပထမအကြိမ်ဖြစ်ပျက်မှုများ၊ ဆက်တိုက်ပွားနေသည့်ဆဲလ်များနှင့် သော့ကော်လံတစ်ခုရှိ ထပ်တူတန်ဖိုးများကို အခြေခံထားသော အတန်းတစ်ခုလုံး။ ဒါပေမယ့် ထုံးစံအတိုင်းပဲ "ဒါပေမယ့်" ရှိတယ်။ ဆဲလ်တစ်ခုလုံးထက် စာသားထပ်နေသော စာသားကို ပေါ်လွင်စေချင်သော်လည်း အခြေအနေအလိုက် ဖော်မတ်ချခြင်းစည်းမျဉ်းများသည် ဆဲလ်အဆင့်တွင် အလုပ်လုပ်ပါသည်။ ၎င်းကို မက်ခရိုများဖြင့်သာ လုပ်ဆောင်နိုင်သည်။ သင့်တွင် VBA အတွေ့အကြုံမရှိသော်လည်း၊ ဤစာမျက်နှာကို ပိတ်ရန် အလျင်စလိုမလုပ်ပါနှင့်။ ဤတွင်၊ အသုံးပြုရန်အဆင်သင့်ဖြစ်သော ကုဒ်နမူနာများနှင့် ၎င်းတို့ကို သင့်အလုပ်စာရွက်များတွင် အသုံးပြုနည်းအသေးစိတ် လမ်းညွှန်ချက်များကို သင်တွေ့ရပါမည်။

    စာသားကို လျစ်လျူရှုထားသည့် ဆဲလ်တစ်ခုအတွင်း ထပ်နေသောစကားလုံးများကို မီးမောင်းထိုးပြပါ

    ဤဥပမာသည် အောက်ပုံတွင်ပြထားသည့်အတိုင်း အနီရောင်ဖောင့်အရောင်ဖြင့် ဆဲလ်တစ်ခုအတွင်း ထပ်နေသောစကားလုံးများ သို့မဟုတ် စာသားကြိုးများကို အရိပ်ပြနည်းကို ပြသထားသည်။ စာလုံးအသေးနှင့် စာလုံးကြီးများကို တူညီသောအက္ခရာများအဖြစ် သတိပြုပါ။ ဥပမာအားဖြင့်၊ လိမ္မော်ရောင် ORANGE နှင့် လိမ္မော်ရောင် ကို တူညီသောစကားလုံးဟု မှတ်ယူပါသည်။

    macro ၏ကုဒ်သည် အောက်ပါအတိုင်းဖြစ်သည်-

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range အဖြစ် Dim Delimiter As String Delimiter = InputBox( "ဆဲလ်တစ်ခုအတွင်း တန်ဖိုးများကို ပိုင်းခြားသော ကန့်သတ်ချက်ထည့်ပါ" , "Delimiter" , ", " ) ဆဲလ်တစ်ခုစီအတွက်၊Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False) Next Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter as String = " " , Optional CaseSensitive As Boolean = True ) Dim text As String Dim words() As String as စာတန်းမှိန်သော စကားလုံးအညွှန်းကိန်း၊ matchCount၊ ရာထူးInText အဖြစ် ကိန်းပြည့်ဖြစ်လျှင် CaseSensitive ထို့နောက် စကားလုံးများ = ခွဲခြင်း(ဆဲလ်.တန်ဖိုး၊ ကန့်သတ်ချက်) အခြားစကားလုံးများ = ခွဲရန်(LCase(ဆဲလ်.တန်ဖိုး၊ ကန့်သတ်ချက်)) အဆုံးသတ်မည်ဆိုပါက စကားလုံးအညွှန်းကိန်း = LBound (စကားလုံးများ) တိုးရန် (စကားလုံးများ) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word = words(nextWordIndex) ထို့နောက် matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 ထို့နောက် text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) ထို့နောက် Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & ကန့်သတ်ချက် Next End အကယ်၍ Next wordIndex End Sub

    ဆဲလ် case-sensitive တွင် စာသားပွားနေမှုကို မီးမောင်းထိုးပြပါ

    အခြေအနေအများစုတွင် Excel တွင် စာသားထည့်သွင်းမှုများဖြင့် လုပ်ဆောင်သည့်အခါ စာလုံးအသေးကို ကျွန်ုပ်တို့ လျစ်လျူရှုလေ့ရှိပါသည်။ သို့သော် အချို့သောအခြေအနေများတွင် စာသားကိစ္စသည် အရေးကြီးသည်။ ဥပမာအားဖြင့်၊ သင်သည် ID များ၊ စကားဝှက်များ၊ သို့မဟုတ် ထိုကဲ့သို့သော အခြားမှတ်တမ်းများနှင့် ဆက်ဆံနေပါက၊ 1-AA 1-aa နှင့် 1-Aa<ကဲ့သို့သော စာကြောင်းများ 2> သည် ထပ်တူများမဟုတ်သည့်အပြင် မီးမောင်းထိုးပြခြင်းမပြုသင့်ပါ-

    ဤကိစ္စတွင်၊ကုဒ်၏အောက်ပါဗားရှင်းကို အသုံးပြုပါ-

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range As Dim Delimiter As String Delimiter = InputBox( "ဆဲလ်တစ်ခုအတွင်း တန်ဖိုးများကို ပိုင်းခြားသော ကန့်သတ်ချက်ထည့်ပါ" , "Delimiter" , ", ") တစ်ခုစီအတွက်၊ အပလီကေးရှင်းရှိ ဆဲလ်။ရွေးချယ်မှု ခေါ်ဆိုမှု HighlightDupeWordsInCell(ဆဲလ်၊ ကန့်သတ်ချက်၊ မှန်) နောက်တစ်ခု အပိုင်းခွဲ HighlightDupeWordsInCell(ဆဲလ်အဖြစ် အပိုင်းအခြား၊ ချန်လှပ်ထားသည့် မျဉ်းကြောင်းအဖြစ် ချန်လှပ်ထားနိုင်သည် = " " ၊ ရွေးချယ်နိုင်သော ဖြစ်ရပ်မှန်အဖြစ် Boolean = True ) စာသားမှိန်ဖျော့ဖျော့ မျဉ်းကြောင်းအတိုင်း Dim စကားလုံးများ() မျဉ်းကြောင်းအတိုင်း word As String Dim wordIndex, matchCount, positionInText as Integer if CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound ( words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound (words) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 ထို့နောက် text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (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 တွင် ထပ်နေသောစကားလုံးများကို အသားပေးဖော်ပြရန် macros ကိုအသုံးပြုနည်း

    သင် VBA ကို စတင်အသုံးပြုသူဖြစ်ပါက၊ အောက်ပါ အဆင့်ဆင့် လမ်းညွှန်ချက်များသည် သင့်အား အဆင်ပြေချောမွေ့စွာ ပို့ဆောင်ပေးမည်ဖြစ်ပါသည်။ . အတွေ့အကြုံရှိသော အသုံးပြုသူများ အသုံးပြုနိုင်မည်ဖြစ်သည်။ဒေါင်းလုဒ်လင့်ခ်ကို ရွေးပြီး ကျန်အပိုင်းများကို ကျော်လိုက်ပါ :)

    သင့်အလုပ်စာအုပ်တွင် ကုဒ်ကိုထည့်ပါ

    သင့် Excel အလုပ်စာအုပ်တွင် မက်ခရို၏ကုဒ်ကို ထည့်သွင်းခြင်းဖြင့် စတင်ပါ။ ဤသည်မှာ မည်ကဲ့သို့ဖြစ်သည်-

    1. dupes များကို မီးမောင်းထိုးပြလိုသည့် workbook ကိုဖွင့်ပါ။
    2. Visual Basic Editor ကိုဖွင့်ရန် Alt + F11 ကိုနှိပ်ပါ။
    3. ဘယ်ဘက်အကန့်တွင်၊ ThisWorkbook ကို right-click နှိပ်ပြီး context menu မှ Insert > Module ကိုရွေးပါ။
    4. ကုဒ်ကို ကုဒ်ဝင်းဒိုးတွင် ကူးထည့်ပါ။
    5. အနာဂတ်အသုံးပြုရန်အတွက် မက်ခရိုကို ဆက်လက်ထားရှိရန်၊ သင့်အလုပ်စာအုပ်ကို မက်ခရို-ဖွင့်ထားသော .xlsm ဖိုင်အဖြစ် သိမ်းဆည်းရန် သေချာပါစေ။

    တနည်းအားဖြင့် ကျွန်ုပ်တို့၏နမူနာအလုပ်စာအုပ်ကို ဒေါင်းလုဒ်လုပ်ပြီး မက်ခရိုကို ထိုနေရာမှ လုပ်ဆောင်နိုင်သည်။ နမူနာ အလုပ်စာအုပ်တွင် အောက်ပါ မက်ခရိုများ ပါဝင်သည်-

    • HighlightDupesCaseInsensitive - စာလုံးအသေးကို လျစ်လျူရှုထားသော ဆဲလ်တစ်ခုအတွင်း ထပ်နေသော အရိပ်များ။
    • HighlightDupesCaseSensitive - မီးမောင်းထိုးပြမှုများ စာလုံးအသေးကို ထည့်သွင်းစဉ်းစားသည့် ဆဲလ်တစ်ခုအတွင်း dupes ဖြစ်သည်။

    အသေးစိတ်အချက်အလက်များအတွက်၊ Excel တွင် VBA ကုဒ် ထည့်သွင်းနည်းကို ကြည့်ပါ။

    မက်ခရိုကို လုပ်ဆောင်ပါ

    ကုဒ်ဖြင့် လုပ်ဆောင်ပါ။ သင့်ကိုယ်ပိုင်အလုပ်စာအုပ် သို့မဟုတ် ကျွန်ုပ်တို့၏နမူနာဖိုင်ကို ဒေါင်းလုဒ်လုပ်ပြီးဖွင့်ပါ၊ ဤနည်းဖြင့် မက်ခရိုကိုဖွင့်ပါ-

    1. သင်၏အလုပ်စာရွက်တွင်၊ ပွားနေသောစာသားကို အသားပေးဖော်ပြလိုသည့်ဆဲလ်များကို ရွေးပါ။ ၎င်းသည် အပိုင်းအခြားတစ်ခု သို့မဟုတ် ကပ်လျက်မဟုတ်သော အပိုင်းအခြားများစွာ ဖြစ်နိုင်သည်။
    2. Alt + F8 ကိုနှိပ်ပါ။
    3. စိတ်ပါဝင်စားသော မက်ခရိုကို ရွေးပြီး Run ကိုနှိပ်ပါ။

    4. မက်ခရိုသည် မျဉ်းသားကို သတ်မှတ်ရန် သင့်အား တောင်းဆိုလိမ့်မည်။ရွေးချယ်ထားသောဆဲလ်များရှိ တန်ဖိုးများကို ပိုင်းခြားပေးသည်။ ကြိုတင်သတ်မှတ်ထားသော ကန့်သတ်ချက် (ကော်မာတစ်ခုနှင့် ကျွန်ုပ်တို့၏ကိစ္စတွင် နေရာလွတ်တစ်ခု) သည် ထည့်သွင်းမှုအကွက်တွင် အလိုအလျောက် ပေါ်လာမည်ဖြစ်သည်။ သင့်လိုအပ်ချက်များအပေါ် မူတည်၍ သင်သည် ပုံသေမျဉ်းမကန့်သတ်ချက်ကို ချန်ထားနိုင်သည် သို့မဟုတ် အခြားတစ်ခုကို ရိုက်ထည့်ပြီးနောက် OK ကိုနှိပ်ပါ။

    ခဏအကြာ၊ ရွေးထားသည့်ရှိ ထပ်နေသည့်စာကြောင်းများအားလုံးကို ဆဲလ်များသည် အနီရောင်ဖြင့် အရိပ်ရလိမ့်မည် (သို့မဟုတ် သင့်ကုဒ်တွင် မည်သည့်ဖောင့်အရောင်ကိုမဆို သတ်မှတ်ပေးသည်)။

    အကြံပြုချက်။ ဆဲလ်တစ်ခုအတွင်း ထပ်တူများကို အမြန်ဖယ်ရှားရန်၊ ကျွန်ုပ်တို့၏ Ultimate Suite တွင်ပါရှိသော အကြိမ်ပေါင်းများစွာ ချွေတာသည့်ကိရိယာများထဲမှ တစ်ခုဖြစ်သည့် Duplicate Substrings များကို ဖယ်ရှားနိုင်သည်။

    သင့်လိုအပ်ချက်အတွက် ကုဒ်ကို ချိန်ညှိနည်း

    ဤအသုံးပြုမှုမှတ်စုများနှင့် VBA ၏ အခြေခံဗဟုသုတများ (သို့မဟုတ် အောက်ဖော်ပြပါ ညွှန်ကြားချက်များကို အနီးကပ်လိုက်နာရုံဖြင့်) သင်သည် သင့်လိုအပ်ချက်များနှင့်အညီ ကုဒ်များကို အလွယ်တကူ ပြင်ဆင်နိုင်ပါသည်။

    တူညီသော module ပေါ်တွင် နေရာချပါ

    သင်သတိပြုမိသည့်အတိုင်း၊ မက်ခရိုနှစ်ခုလုံး ( HighlightDupesCaseSensitive နှင့် HighlightDupesCaseInsensitive ) သည် HighlightDupeWordsInCell function ကိုခေါ်ဆိုပါသည်။ အထက်ဖော်ပြပါ မက်ခရိုနှစ်ခုကြား ခြားနားချက်မှာ 3rd ကန့်သတ်ဘောင် (CaseSensitive) တွင်သာ အဆိုပါလုပ်ဆောင်ချက်သို့ ပေးပို့သည်။

    ဖြစ်ရပ်မှန်ရှာဖွေမှုအတွက်၊ ၎င်းကို TRUE ဟု သတ်မှတ်ထားသည်-

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    အသေးစိတ်မပါသောရှာဖွေမှုအတွက်၊ ၎င်းကို FALSE ဟုသတ်မှတ်ထားပါသည်-

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    မာခရိုများအလုပ်လုပ်ရန်အတွက်၊ HighlightDupeWordsInCell လုပ်ဆောင်ချက်၏ကုဒ်ကို ပေါ်တွင်တင်ရပါမည်။ module နဲ့အတူတူပါပဲ။မက်ခရို။

    ကန့်သတ်ချက်

    လုပ်ဆောင်သည့်အခါ၊ မက်ခရိုသည် ရွေးချယ်ထားသောဆဲလ်များရှိ စကားလုံးများ/စာကြောင်းများကို ပိုင်းခြားပေးသည့် အပိုင်းအစကို သတ်မှတ်ရန် သင့်အား တောင်းဆိုလိမ့်မည်။ ပုံသေ ကန့်သတ်ချက်သည် ကော်မာနှင့် နေရာလွတ် (", ") ဖြစ်ပြီး ၎င်းကို InputBox တွင် ကြိုတင်သတ်မှတ်ထားပါသည်-

    Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")

    သင်၏ ကုဒ်တွင်၊ သင်သည် အခြားအက္ခရာ(များ)ကို လွတ်လပ်စွာ အသုံးပြုနိုင်သည်။ ကြိုတင်သတ်မှတ်ထားသော ကန့်သတ်ချက်အဖြစ်။

    အရောင်

    ပုံမှန်အားဖြင့်၊ HighlightDupeWordsInCell လုပ်ဆောင်ချက်သည် အနီရောင်ဖောင့်အရောင်ဖြင့် ထပ်နေသည့် အရိပ်များဖြစ်သည်။ အရောင်ကို ဤစာကြောင်းတွင် သတ်မှတ်ထားသည်-

    Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

    ဤတွင်၊ vbRed သည် VBA အရောင်အဆက်မပြတ်အမျိုးအစားတစ်ခုဖြစ်သည်။ မတူညီသောအရောင်ဖြင့် dupe များကိုပြသရန်၊ vbRed ကို vbGreen၊ vbYellow၊ vbBlue စသည်ဖြင့် vbRed ဖြင့် အစားထိုးနိုင်ပါသည်။ T သူပံ့ပိုးပေးထားသော အရောင်ကိန်းသေစာရင်းကို ဤနေရာတွင် တွေ့နိုင်ပါသည်။

    အဲဒါ Excel ဆဲလ်များတွင် ထပ်နေသောစကားလုံးများကို ပေါ်လွင်အောင်ပြုလုပ်နည်း။ ကျွန်ုပ်တို့၏ဘလော့ဂ်တွင် ဖတ်ရှုပြီး နောက်အပတ်တွင် ဆုံတွေ့ခွင့်ရရန် မျှော်လင့်ခြင်းအတွက် ကျေးဇူးတင်ပါသည်။

    ရရှိနိုင်သော ဒေါင်းလုဒ်များ

    ဆဲလ်တစ်ခုရှိ ထပ်နေသည့်များကို မီးမောင်းထိုးပြရန် ကုဒ်နမူနာများ (.xlsm ဖိုင်)

    Ultimate Suite 14-ရက်ကြာ အပြည့်အဝလုပ်ဆောင်နိုင်သော ဗားရှင်း (.exe ဖိုင်)

    မိုက်ကယ်ဘရောင်းသည် ဆော့ဖ်ဝဲလ်ကိရိယာများကို အသုံးပြု၍ ရှုပ်ထွေးသောလုပ်ငန်းစဉ်များကို ရိုးရှင်းအောင်ပြုလုပ်လိုသော သီးသန့်နည်းပညာကို ဝါသနာပါသူတစ်ဦးဖြစ်သည်။ နည်းပညာနယ်ပယ်တွင် ဆယ်စုနှစ်တစ်ခုကျော်အတွေ့အကြုံဖြင့် Microsoft Excel နှင့် Outlook အပြင် Google Sheets နှင့် Docs တို့တွင် သူ၏ကျွမ်းကျင်မှုကို ချီးမြှောက်ခဲ့သည်။ Michael ၏ဘလော့ဂ်သည် ကုန်ထုတ်စွမ်းအားနှင့် ထိရောက်မှုတိုးတက်စေရန်အတွက် လိုက်လျောရလွယ်ကူသော အကြံပြုချက်များနှင့် သင်ခန်းစာများကို အခြားသူများအား မျှဝေရန် ရည်ရွယ်ပါသည်။ သင်သည် ကျွမ်းကျင်သော သို့မဟုတ် စတင်သူဖြစ်ပါစေ၊ Michael ၏ဘလော့ဂ်သည် ဤမရှိမဖြစ်လိုအပ်သောဆော့ဖ်ဝဲလ်ကိရိယာများထဲမှ အကောင်းဆုံးကိုရယူရန်အတွက် အဖိုးတန်သောထိုးထွင်းသိမြင်မှုနှင့် လက်တွေ့ကျသောအကြံဉာဏ်များကို ပေးပါသည်။