Excel yacheykasida ikki nusxadagi matn/so'zlarni qanday ajratib ko'rsatish mumkin

  • Buni Baham Ko'Ring
Michael Brown

Oʻquv qoʻllanma VBA yordamida hujayra ichidagi takroriy soʻzlar yoki matn satrlarini qanday ajratib koʻrsatishni koʻrsatib beradi.

Excel shartli formatlash siz oʻylashingiz mumkin boʻlgan barcha usullarda dublikatlarni ajratib koʻrsatish imkonini beradi: bitta ustunda yoki bir nechta ustunlarda, ketma-ket takrorlanadigan kataklarda va kalit ustundagi bir xil qiymatlarga asoslangan butun qatorlarda birinchi marta bo'lgan yoki bo'lmagan holda. Ammo, odatdagidek, "lekin" bor. Shartli formatlash qoidalari hujayra darajasida ishlaydi, shu bilan birga siz butun katakchalarni emas, balki takroriy matnni ajratib ko'rsatishni xohlashingiz mumkin. Buni faqat makroslar yordamida amalga oshirish mumkin. VBA bilan tajribangiz bo'lmasa ham, iltimos, ushbu sahifani yopishga shoshilmang. Bu yerda siz foydalanishga tayyor kod misollari va ularni ish varaqlarida ishlatish bo‘yicha batafsil ko‘rsatmalarni topasiz.

    Matn registrini hisobga olmagan holda katakchadagi takroriy so‘zlarni ajratib ko‘rsatish

    Ushbu misol quyidagi rasmda ko'rsatilganidek, qizil shrift rangida hujayra ichidagi takroriy so'zlar yoki matn qatorlarini qanday soya qilishni ko'rsatadi. E'tibor bering, kichik va katta harflar bir xil belgilar sifatida qabul qilinadi. Masalan, apelsin , Apelsin va Apelsin bir xil soʻz hisoblanadi.

    makrosning kodi quyidagicha:

    Ommaviy Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter as String Delimiter = InputBox( "Yacheykadagi qiymatlarni ajratuvchi ajratuvchini kiriting" , "Delimiter" , ", " ) Har bir yacheyka uchunApplication.Selection Call HighlightDupeWordsInCell(Yacheyka, Delimiter, False ) Keyingi End Sub Sub HighlightDupeWordsInCell(Hujayra diapazon sifatida, ixtiyoriy ajratuvchi qator sifatida = " " , ixtiyoriy katta-kichik registr mantiqiy = rost ) Matnni xiralashtirish String sifatida Dim so'z() String sifatida String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Keyin so'zlar = Split(Cell.Value, Delimiter) Boshqa so'zlar = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (so'zlar) to UBound (so'zlar) - 1 so'z = so'zlar(wordIndex) matchCount = 0 NextWordIndex uchun = wordIndex + 1 To UBound (so'zlar) Agar so'z = so'zlar(nextWordIndex) bo'lsa matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Keyin text = "" Index uchun = LBound (so'zlar) To UBound (so'zlar) text = text & so'zlar(Index) Agar (so'zlar(Index) = so'z) Keyin Cell.Characters(Len(matn) - Len(so'z) + 1, Len(so'z)).Font.Color = vbRed End Agar matn = matn & Ajratuvchi Keyingi End If Next wordIndex End Sub

    Yacheykadagi takroriy matnni katta-kichik harflar bilan ajratib ko'rsatish

    Ko'p hollarda Excelda matnli yozuvlar bilan ishlashda biz harflar kattaligiga e'tibor bermaymiz. Biroq, muayyan sharoitlarda matn holati muhim ahamiyatga ega. Masalan, agar siz identifikatorlar, parollar yoki shunga o'xshash boshqa yozuvlar bilan ishlayotgan bo'lsangiz, 1-AA , 1-aa va 1-Aa takroriy emas va ularni ajratib ko'rsatmaslik kerak:

    Bu holda,kodning quyidagi versiyasidan foydalaning:

    Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Yacheykadagi qiymatlarni ajratuvchi ajratuvchini kiriting" , "Delimiter" , ", " ) Har biri uchun Application.Selection ichidagi hujayra HighlightDupeWordsInCell(Hujayra, ajratuvchi, rost ) Keyingi oxiri pastki pastki qismi HighlightDupeWordsInCell(Yacheyka diapazon sifatida, ixtiyoriy chegaralovchi qator sifatida = " " , ixtiyoriy katta-kichik registr mantiqiy = rost ) Matnni String sifatida xiralashtirish Dim so'zlar() word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Keyin so'zlar = Split(Cell.Value, Delimiter) Boshqa so'zlar = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (so'zlar) To UBound ( so'zlar) - 1 so'z = so'zlar(wordIndex) matchCount = 0 NextWordIndex uchun = wordIndex + 1 To UBound (so'zlar) Agar so'z = so'zlar(nextWordIndex) Keyin matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Keyin text = "" Index uchun = LBound (so'zlar) To UBound (so'zlar) text = text & so'zlar(Index) Agar (so'zlar(Index) = so'z) Keyin Cell.Characters(Len(matn) - Len(so'z) + 1, Len(so'z)).Font.Color = vbRed End Agar matn = matn & Delimiter Next End If Next wordIndex End Sub

    Excelda takroriy so'zlarni ajratib ko'rsatish uchun makroslardan qanday foydalanish

    Agar siz VBA-dan foydalanishni boshlayotgan bo'lsangiz, quyida keltirilgan bosqichma-bosqich ko'rsatmalar sizga qulay tarzda o'tadi. . Tajribali foydalanuvchilar mumkinfaqat yuklab olish havolasini tanlang va qolganini o'tkazib yuboring :)

    Kodni ishchi kitobingizga qo'shing

    Makro kodini Excel ish kitobingizga kiritishdan boshlaysiz. Mana shunday:

    1. Qayta nusxalarni ajratib ko'rsatmoqchi bo'lgan ish kitobini oching.
    2. Visual Basic muharririni ochish uchun Alt + F11 tugmalarini bosing.
    3. Chap panelda, ThisWorkbook -ni o'ng tugmasini bosing va kontekst menyusidan Insert > Module -ni tanlang.
    4. Kodni Kod oynasiga joylashtiring.
    5. Makroni kelgusida foydalanish uchun saqlash uchun ishchi kitobingizni so'l bilan faollashtirilgan .xlsm fayli sifatida saqlashni unutmang.

    Shuningdek, siz bizning namunaviy ish kitobimizni yuklab olishingiz va u yerdan makrosni ishga tushirishingiz mumkin. Ish kitobining namunasi quyidagi makroslarni o'z ichiga oladi:

    • HighlightDupesCaseInsensitive - harflar kattaligiga e'tibor bermagan holda katak ichidagi dublikatlarni soya qiladi.
    • HighlightDupesCaseSensitive - ajratib ko'rsatish Hujayradagi harflar holatini hisobga olgan holda dupes.

    Qo'shimcha ma'lumot olish uchun VBA kodini Excelga qanday kiritish mumkin bo'limiga qarang.

    Makroni ishga tushirish

    Kod bilan o'zingizning ishchi kitobingizga yoki yuklab olingan namunaviy faylimizga qo'shilgan va oching, makrosni shu tarzda ishga tushiring:

    1. Ish varaqingizda ikki nusxadagi matnni ajratib ko'rsatishni istagan kataklarni tanlang. Bu bitta diapazon yoki bir nechta qoʻshni boʻlmagan diapazon boʻlishi mumkin.
    2. Alt + F8 tugmalarini bosing.
    3. Qiziqarli makroni tanlang va Ishga tushirish tugmasini bosing.

    4. Makro sizdan ajratuvchini ko'rsatishingizni so'rayditanlangan katakchalardagi qiymatlarni ajratib turadi. Oldindan o'rnatilgan ajratuvchi (bizning holatda vergul va bo'sh joy) avtomatik ravishda kiritish maydonida paydo bo'ladi. Ehtiyojlaringizga qarab, siz birlamchi ajratgichni qoldirishingiz yoki boshqasini kiritishingiz mumkin, so'ngra OK tugmasini bosing.

    Birozdan so'ng tanlangan qatordagi barcha takroriy satrlar hujayralar qizil rangga bo'yaladi (yoki kodingizda qanday shrift rangi o'rnatilgan bo'lsa).

    Maslahat. Hujayra ichidagi takroriy nusxalarni tezda o'chirish uchun Ultimate Suite tarkibiga kiritilgan ko'p vaqtni tejash vositalaridan biri bo'lgan Ikki nusxadagi pastki satrlarni olib tashlashdan foydalanishingiz mumkin.

    Kodni ehtiyojlaringiz uchun qanday sozlash mumkin

    Ushbu foydalanish eslatmalari va VBA-ning eng oddiy bilimlari (yoki quyidagi ko'rsatmalarga amal qilish) bilan siz kodlarni o'zingizning ehtiyojlaringizga mos ravishda osongina o'zgartirishingiz mumkin.

    Bir xil modulga joylashtiring

    E'tibor berganingizdek, ikkala makros ( HighlightDupesCaseSensitive va HighlightDupesCaseInsensitive ) HighlightDupeWordsInCell funktsiyasini chaqiradi. Yuqoridagi ikkita makros o'rtasidagi farq faqat aytilgan funksiyaga o'tkazilgan 3-parametrda (CaseSensitive) bo'ladi.

    Harf-harakatni sezgir qidirish uchun u TRUE qiymatiga o'rnatiladi:

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    Harf harflarini hisobga olmaydigan qidiruv uchun u FALSE qiymatiga o'rnatiladi:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    Makrolar ishlashi uchun HighlightDupeWordsInCell funksiyasining kodi quyidagi joyga joylashtirilishi kerak. bilan bir xil modulmakroslar.

    Ajratishchi

    Ishga tushirishda makros tanlangan katakchalardagi so'zlarni/satrlarni ajratuvchi ajratuvchini ko'rsatishni so'raydi. Odatiy ajratuvchi vergul va boʻsh joy (", ") boʻlib, u InputBox-da oldindan oʻrnatilgan:

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

    Kodingizda boshqa har qanday belgi(lar)ni ishlatishingiz mumkin. oldindan belgilangan chegaralovchi sifatida.

    Rang

    Sukut bo'yicha, HighlightDupeWordsInCell funktsiyasi qizil shrift rangida takrorlanadi. Rang bu qatorda aniqlanadi:

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

    Bu yerda vbRed VBA rang doimiysining bir turidir. Duplarni boshqa rangda ko'rsatish uchun vbRedni vbGreen, vbYellow, vbBlue va boshqalar kabi boshqa konstanta bilan almashtirishingiz mumkin. Excel kataklarida takroriy so'zlarni qanday ajratib ko'rsatish mumkin. O'qiganingiz uchun tashakkur va keyingi hafta blogimizda ko'rishga umid qilaman!

    Mavjud yuklab olishlar

    Hujayradagi (.xlsm fayli) dublikatlarni ajratib ko'rsatish uchun kod misollari

    Ultimate Suite 14 kunlik to'liq ishlaydigan versiyasi (.exe fayli)

    Maykl Braun - dasturiy vositalardan foydalangan holda murakkab jarayonlarni soddalashtirishga ishtiyoqi bo'lgan maxsus texnologiya ishqibozi. Texnologiya sohasida o'n yildan ortiq tajribaga ega bo'lgan holda, u Microsoft Excel va Outlook, shuningdek, Google Sheets va Docs dasturlarida o'z mahoratini oshirdi. Mayklning blogi o'z bilimi va tajribasini boshqalar bilan baham ko'rishga, samaradorlik va samaradorlikni oshirish uchun amal qilish oson maslahatlar va o'quv qo'llanmalariga bag'ishlangan. Tajribali mutaxassismisiz yoki yangi boshlovchi boʻlasizmi, Mayklning blogi ushbu muhim dasturiy vositalardan maksimal darajada foydalanish uchun qimmatli tushunchalar va amaliy maslahatlarni taqdim etadi.