Isi kandungan
Tutorial menunjukkan cara untuk menyerlahkan perkataan pendua atau rentetan teks dalam sel menggunakan VBA.
Pemformatan Bersyarat Excel membolehkan anda menyerlahkan pendua dalam setiap cara yang anda boleh fikirkan: dengan atau tanpa kejadian pertama, dalam satu lajur atau berbilang lajur, sel pendua berturut-turut dan keseluruhan baris berdasarkan nilai yang sama dalam lajur utama. Tetapi, seperti biasa, ada "tetapi". Peraturan pemformatan bersyarat berfungsi pada peringkat sel manakala anda mungkin mahu menyerlahkan teks pendua dan bukannya keseluruhan sel. Ini hanya boleh dilakukan dengan makro. Walaupun anda tidak mempunyai sebarang pengalaman dengan VBA, sila jangan tergesa-gesa untuk menutup halaman ini. Di sini, anda akan menemui contoh kod sedia untuk digunakan dan arahan terperinci tentang cara menggunakannya dalam lembaran kerja anda.
Serlahkan perkataan pendua dalam sel tanpa menghiraukan huruf besar kecil
Contoh ini menunjukkan cara untuk melorek perkataan pendua atau rentetan teks dalam sel dalam warna fon merah seperti yang ditunjukkan dalam imej di bawah. Sila ambil perhatian bahawa huruf kecil dan huruf besar dianggap sebagai aksara yang sama. Contohnya, oren , OREN dan Oren dianggap sebagai perkataan yang sama.
Perkataan kod makro adalah seperti berikut:
Public Sub HighlightDupesCaseInsensitive() Malapkan Sel Sebagai Julat Malap Pembatas Sebagai String Delimiter = InputBox( "Masukkan pembatas yang memisahkan nilai dalam sel" , "Pembatas" , ", " ) Untuk Setiap Sel DalamApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) Sub Akhir Seterusnya SorotanDupeWordsInCell(Sel Sebagai Julat, Pilihan Pembatas Sebagai String = " " , Huruf Pilihan Sensitif Sebagai Boolean = Benar ) Teks malap Sebagai String Perkataan malap() Sebagai Rentetan Kata malap Rentetan Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Lain-lain perkataan = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 perkataan = perkataan(wordIndex) matchCount = 0 Untuk nextWordIndex = wordIndex + 1 To UBound (words) Jika perkataan = words(nextWordIndex) Kemudian matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Kemudian teks = "" Untuk Indeks = LBound (perkataan) Ke UBound (perkataan) teks = teks & perkataan(Indeks) Jika (perkataan(Indeks) = perkataan) Kemudian Sel.Watak(Len(teks) - Len(perkataan) + 1, Len(perkataan)).Font.Warna = vbRed End Jika teks = teks & Pembatas Seterusnya Tamat Jika Seterusnya wordIndex Tamat SubSerlahkan teks pendua dalam sel yang sensitif huruf besar
Dalam kebanyakan situasi, kita cenderung mengabaikan huruf besar apabila bekerja dengan entri teks dalam Excel. Walau bagaimanapun, dalam keadaan tertentu, kes teks adalah penting. Sebagai contoh, jika anda berurusan dengan ID, kata laluan atau rekod lain seperti itu, rentetan seperti 1-AA , 1-aa dan 1-Aa bukan pendua dan tidak boleh diserlahkan:
Dalam kes ini,gunakan versi kod berikut:
Public Sub HighlightDupesCaseSensitive() Sel Malap Sebagai Pembatas Malap Julat Sebagai Pembatas Rentetan = InputBox( "Masukkan pembatas yang memisahkan nilai dalam sel" , "Pembatas" , ", " ) Untuk Setiap Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) Sub Akhir Seterusnya Sorotan SubtitleDupeWordsInCell(Sel Sebagai Julat, Pembatas Pilihan Sebagai Rentetan = " " , Huruf Pilihan Sensitif Sebagai Boolean = Benar ) Teks malap Sebagai Rentetan Perkataan malap() Sebagai Rentetan perkataan As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Lain perkataan = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound ( perkataan) - 1 perkataan = perkataan(wordIndex) matchCount = 0 Untuk nextWordIndex = wordIndex + 1 To UBound (words) Jika perkataan = words(nextWordIndex) Kemudian matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Kemudian teks = "" Untuk Indeks = LBound (perkataan) Ke UBound (perkataan) teks = teks & perkataan(Indeks) Jika (perkataan(Indeks) = perkataan) Kemudian Sel.Watak(Len(teks) - Len(perkataan) + 1, Len(perkataan)).Font.Warna = vbRed End Jika teks = teks & Pembatas Seterusnya Tamat Jika Seterusnya wordIndex Tamat SubCara menggunakan makro untuk menyerlahkan perkataan pendua dalam Excel
Jika anda seorang pemula dalam menggunakan VBA, arahan langkah demi langkah di bawah akan memandu anda dengan selesa . Pengguna yang berpengalaman bolehcuma pilih pautan muat turun dan langkau yang lain :)
Tambahkan kod pada buku kerja anda
Anda mulakan dengan memasukkan kod makro dalam buku kerja Excel anda. Begini caranya:
- Buka buku kerja di mana anda ingin menyerlahkan penipuan.
- Tekan Alt + F11 untuk membuka Editor Visual Basic.
- Pada anak tetingkap kiri, klik kanan Buku Kerja Ini dan pilih Sisipkan > Modul daripada menu konteks.
- Tampal kod dalam tetingkap Kod.
- Untuk menyimpan makro untuk kegunaan masa hadapan, pastikan anda menyimpan buku kerja anda sebagai fail .xlsm yang didayakan makro.
Sebagai alternatif, anda boleh memuat turun buku kerja sampel kami dan menjalankan makro dari sana. Buku kerja sampel mengandungi makro berikut:
- HighlightDupesCaseInsensitive - lorekkan pendua dalam sel tanpa menghiraukan huruf besar.
- HighlightDupesCaseSensitive - sorotan menipu dalam sel mempertimbangkan huruf besar.
Untuk mendapatkan maklumat lanjut, sila lihat Cara memasukkan kod VBA dalam Excel.
Jalankan makro
Dengan kod ditambahkan pada buku kerja anda sendiri atau fail sampel kami yang dimuat turun dan dibuka, jalankan makro dengan cara ini:
- Dalam lembaran kerja anda, pilih sel yang anda ingin serlahkan teks pendua. Ini boleh menjadi satu julat atau berbilang julat bukan bersebelahan.
- Tekan Alt + F8 .
- Pilih makro minat dan klik Jalankan .
- Makro akan meminta anda untuk menentukan pembatasyang memisahkan nilai dalam sel yang dipilih. Pembatas pratetap (koma dan ruang dalam kes kami) akan muncul dalam kotak input secara automatik. Bergantung pada keperluan anda, anda boleh meninggalkan pembatas lalai atau menaip yang berbeza, dan kemudian klik OK.
Seketika kemudian, semua rentetan pendua dalam yang dipilih sel akan dilorekkan dalam warna merah (atau apa sahaja warna fon yang ditetapkan dalam kod anda).
Petua. Untuk mengalih keluar pendua dengan cepat dalam sel, anda boleh menggunakan Alih Keluar Subrentetan Pendua, salah satu daripada banyak alat penjimat masa yang disertakan dalam Suite Ultimate kami.
Cara melaraskan kod untuk keperluan anda
Dengan nota penggunaan ini dan pengetahuan asas VBA (atau hanya mengikut arahan di bawah), anda boleh mengubah suai kod dengan mudah mengikut keperluan anda.
Letakkan pada modul yang sama
Seperti yang anda perhatikan, kedua-dua makro ( HighlightDupesCaseSensitive dan HighlightDupesCaseInsensitive ) memanggil fungsi HighlightDupeWordsInCell . Perbezaan antara kedua-dua makro di atas hanya dalam parameter ke-3 (CaseSensitive) yang dihantar kepada fungsi tersebut.
Untuk carian sensitif huruf besar-besaran, ia ditetapkan kepada TRUE:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Untuk carian tidak peka huruf besar-besaran, ia ditetapkan kepada FALSE:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Untuk makro berfungsi, kod fungsi HighlightDupeWordsInCell mesti diletakkan pada modul yang sama denganmakro.
Pembatas
Apabila dijalankan, makro akan meminta anda untuk menentukan pembatas yang memisahkan perkataan/rentetan dalam sel yang dipilih. Pembatas lalai ialah koma dan ruang (", ") dan ia dipratetap dalam InputBox:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
Dalam kod anda, anda bebas menggunakan mana-mana aksara lain sebagai pembatas yang dipratentukan.
Warna
Secara lalai, fungsi HighlightDupeWordsInCell mewarnakan pendua dalam warna fon merah. Warna ditakrifkan dalam baris ini:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Di sini, vbRed ialah sejenis pemalar warna VBA. Untuk memaparkan penipu dalam warna yang berbeza, anda boleh menggantikan vbRed dengan pemalar lain seperti vbGreen, vbYellow, vbBlue, dll. T senarai pemalar warna yang disokong boleh didapati di sini.
Itu bagaimana untuk menyerlahkan perkataan pendua dalam sel Excel. Saya berterima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu depan!
Muat turun yang tersedia
Contoh kod untuk menyerlahkan pendua dalam sel (fail.xlsm)
Multimate Suite versi 14 hari berfungsi sepenuhnya (fail .exe)