สารบัญ
บทช่วยสอนแสดงวิธีเน้นคำหรือสตริงข้อความที่ซ้ำกันภายในเซลล์โดยใช้ VBA
การจัดรูปแบบตามเงื่อนไขของ Excel ทำให้สามารถเน้นคำที่ซ้ำกันด้วยวิธีที่เป็นไปได้ทั้งหมดที่คุณนึกถึง: โดยมีหรือไม่มีการเกิดขึ้นครั้งแรก ในคอลัมน์เดียวหรือหลายคอลัมน์ เซลล์ที่ซ้ำกันต่อเนื่องกัน และทั้งแถวตามค่าที่เหมือนกันในคอลัมน์หลัก แต่ตามปกติจะมี "แต่" กฎการจัดรูปแบบตามเงื่อนไขทำงานในระดับเซลล์ ขณะที่คุณอาจต้องการเน้นข้อความที่ซ้ำกันแทนที่จะเน้นทั้งเซลล์ สิ่งนี้สามารถทำได้ด้วยมาโครเท่านั้น แม้ว่าคุณจะไม่มีประสบการณ์ใดๆ เกี่ยวกับ VBA โปรดอย่ารีบเร่งที่จะปิดหน้านี้ ที่นี่ คุณจะพบตัวอย่างโค้ดที่พร้อมใช้งานและคำแนะนำโดยละเอียดเกี่ยวกับวิธีใช้งานในเวิร์กชีตของคุณ
เน้นคำที่ซ้ำกันในเซลล์โดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
ตัวอย่างนี้แสดงวิธีการแรเงาคำหรือสตริงข้อความที่ซ้ำกันภายในเซลล์ด้วยสีตัวอักษรสีแดงดังที่แสดงในภาพด้านล่าง โปรดทราบว่าตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ถือเป็นอักขระตัวเดียวกัน ตัวอย่างเช่น orange , ORANGE และ Orange ให้ถือว่าเป็นคำเดียวกัน
The โค้ดของแมโครมีดังนี้:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that Separated Values in a Cell", "Delimiter" , ", " ) For Each Cell InApplication.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 Dim word As สตริง 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 คำ = คำ (wordIndex) matchCount = 0 สำหรับ nextWordIndex = wordIndex + 1 ถึง UBound (คำ) ถ้า word = คำ (nextWordIndex) จากนั้น matchCount = matchCount + 1 สิ้นสุด ถ้าถัดไป nextWordIndex ถ้า matchCount > 0 จากนั้น text = "" สำหรับดัชนี = LBound (คำ) ถึง UBound (คำ) text = text & คำ(ดัชนี) ถ้า (คำ(ดัชนี) = คำ) จากนั้น Cell.Characters(Len(ข้อความ) - Len(คำ) + 1, Len(คำ)).Font.Color = vbRed End ถ้า text = ข้อความ & Delimiter Next End If Next wordIndex End Subเน้นข้อความที่ซ้ำกันในเซลล์โดยคำนึงถึงตัวพิมพ์เล็กและใหญ่
ในสถานการณ์ส่วนใหญ่ เรามักจะไม่สนใจตัวพิมพ์เล็กและใหญ่เมื่อทำงานกับรายการข้อความใน Excel อย่างไรก็ตาม ภายใต้สถานการณ์บางอย่าง ตัวพิมพ์ข้อความมีความสำคัญ ตัวอย่างเช่น หากคุณกำลังจัดการกับ ID รหัสผ่าน หรือบันทึกประเภทอื่นๆ สตริง เช่น 1-AA , 1-aa และ 1-Aa ไม่ซ้ำกันและไม่ควรเน้น:
ในกรณีนี้ใช้รหัสรุ่นต่อไปนี้:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Enter the delimiter that sevidences in a cell", "Delimiter" , ", " ) For Each เซลล์ในแอปพลิเคชันการเลือกการเรียก HighlightDupeWordsInCell (เซลล์ ตัวคั่น จริง ) ถัดไป ปิดท้ายย่อย ไฮไลต์ DupeWordsInCell (เซลล์เป็นช่วง ตัวคั่นที่เลือกเป็นสตริง = " " ตัวเลือกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เป็นบูลีน = จริง ) หรี่ข้อความเป็นสตริง หรี่คำ () เป็นสตริงหรี่ word As String Dim wordIndex, matchCount, positionInText As Integer ถ้า CaseSensitive จากนั้น words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound ( คำ) - 1 คำ = คำ (wordIndex) matchCount = 0 สำหรับ nextWordIndex = wordIndex + 1 ถึง UBound (คำ) ถ้า word = คำ (nextWordIndex) จากนั้น matchCount = matchCount + 1 สิ้นสุด ถ้าถัดไป nextWordIndex ถ้า matchCount > 0 จากนั้น text = "" สำหรับดัชนี = LBound (คำ) ถึง UBound (คำ) text = text & คำ(ดัชนี) ถ้า (คำ(ดัชนี) = คำ) จากนั้น Cell.Characters(Len(ข้อความ) - Len(คำ) + 1, Len(คำ)).Font.Color = vbRed End ถ้า text = ข้อความ & Delimiter Next End If Next wordIndex End Subวิธีใช้มาโครเพื่อเน้นคำที่ซ้ำกันใน Excel
หากคุณเป็นมือใหม่ในการใช้ VBA คำแนะนำทีละขั้นตอนด้านล่างนี้จะแนะนำคุณอย่างสบายๆ . ผู้ใช้ที่มีประสบการณ์อาจเพียงเลือกลิงก์ดาวน์โหลดและข้ามส่วนที่เหลือ :)
เพิ่มรหัสลงในสมุดงานของคุณ
คุณเริ่มต้นด้วยการแทรกรหัสของมาโครในสมุดงาน Excel ของคุณ มีวิธีการดังนี้:
- เปิดสมุดงานที่คุณต้องการเน้นรายการซ้ำ
- กด Alt + F11 เพื่อเปิด Visual Basic Editor
- ในบานหน้าต่างด้านซ้าย คลิกขวา ThisWorkbook และเลือก แทรก > โมดูล จากเมนูบริบท
- วางโค้ดในหน้าต่างโค้ด
- หากต้องการเก็บมาโครไว้ใช้ในอนาคต อย่าลืมบันทึกสมุดงานของคุณเป็นไฟล์ .xlsm ที่เปิดใช้งานมาโคร
อีกทางหนึ่ง คุณสามารถดาวน์โหลดสมุดงานตัวอย่างของเราและเรียกใช้มาโครได้จากที่นั่น สมุดงานตัวอย่างประกอบด้วยมาโครต่อไปนี้:
- HighlightDupesCaseInsensitive - เฉดสีที่ซ้ำกันภายในเซลล์โดยไม่สนใจตัวพิมพ์เล็กและใหญ่
- HighlightDupesCaseSensitive - ไฮไลท์ ซ้ำกันในเซลล์โดยพิจารณาจากตัวพิมพ์ใหญ่-เล็ก
สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีแทรกโค้ด VBA ใน Excel
เรียกใช้แมโคร
ด้วยโค้ด เพิ่มลงในสมุดงานของคุณเองหรือไฟล์ตัวอย่างของเราที่ดาวน์โหลดและเปิด เรียกใช้มาโครด้วยวิธีนี้:
- ในเวิร์กชีตของคุณ ให้เลือกเซลล์ที่คุณต้องการเน้นข้อความที่ซ้ำกัน ซึ่งอาจเป็นหนึ่งช่วงหรือหลายช่วงที่ไม่ติดกันก็ได้
- กด Alt + F8
- เลือกมาโครที่สนใจแล้วคลิก เรียกใช้ . ดูสิ่งนี้ด้วย: สูตรการจัดรูปแบบตามเงื่อนไขของ Excel ตามเซลล์อื่น
- มาโครจะขอให้คุณระบุตัวคั่นที่แยกค่าในเซลล์ที่เลือก ตัวคั่นที่กำหนดไว้ล่วงหน้า (เครื่องหมายจุลภาคและเว้นวรรคในกรณีของเรา) จะปรากฏในช่องป้อนข้อมูลโดยอัตโนมัติ ขึ้นอยู่กับความต้องการของคุณ คุณสามารถปล่อยให้ตัวคั่นเริ่มต้นหรือพิมพ์ตัวคั่นอื่น จากนั้นคลิก ตกลง
สักครู่ต่อมา สตริงที่ซ้ำกันทั้งหมดในส่วนที่เลือก เซลล์จะถูกแรเงาด้วยสีแดง (หรือสีแบบอักษรใดก็ตามที่ตั้งค่าไว้ในโค้ดของคุณ)
เคล็ดลับ หากต้องการ ลบรายการที่ซ้ำกัน ภายในเซลล์อย่างรวดเร็ว คุณสามารถใช้ 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 เป็นต้น สามารถดูรายการค่าคงที่สีที่รองรับได้ที่นี่
นั่นคือ วิธีเน้นคำที่ซ้ำกันในเซลล์ Excel ฉันขอขอบคุณที่อ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
ดาวน์โหลดได้
ตัวอย่างโค้ดเพื่อเน้นรายการที่ซ้ำกันในเซลล์ (ไฟล์ .xlsm)
สุดยอด Suite เวอร์ชันการทำงานเต็มรูปแบบ 14 วัน (ไฟล์ .exe)