วิธีเน้นข้อความ / คำที่ซ้ำกันในเซลล์ Excel

  • แบ่งปันสิ่งนี้
Michael Brown

บทช่วยสอนแสดงวิธีเน้นคำหรือสตริงข้อความที่ซ้ำกันภายในเซลล์โดยใช้ 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 ของคุณ มีวิธีการดังนี้:

    1. เปิดสมุดงานที่คุณต้องการเน้นรายการซ้ำ
    2. กด Alt + F11 เพื่อเปิด Visual Basic Editor
    3. ในบานหน้าต่างด้านซ้าย คลิกขวา ThisWorkbook และเลือก แทรก > โมดูล จากเมนูบริบท
    4. วางโค้ดในหน้าต่างโค้ด
    5. หากต้องการเก็บมาโครไว้ใช้ในอนาคต อย่าลืมบันทึกสมุดงานของคุณเป็นไฟล์ .xlsm ที่เปิดใช้งานมาโคร

    อีกทางหนึ่ง คุณสามารถดาวน์โหลดสมุดงานตัวอย่างของเราและเรียกใช้มาโครได้จากที่นั่น สมุดงานตัวอย่างประกอบด้วยมาโครต่อไปนี้:

    • HighlightDupesCaseInsensitive - เฉดสีที่ซ้ำกันภายในเซลล์โดยไม่สนใจตัวพิมพ์เล็กและใหญ่
    • HighlightDupesCaseSensitive - ไฮไลท์ ซ้ำกันในเซลล์โดยพิจารณาจากตัวพิมพ์ใหญ่-เล็ก

    สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีแทรกโค้ด VBA ใน Excel

    เรียกใช้แมโคร

    ด้วยโค้ด เพิ่มลงในสมุดงานของคุณเองหรือไฟล์ตัวอย่างของเราที่ดาวน์โหลดและเปิด เรียกใช้มาโครด้วยวิธีนี้:

    1. ในเวิร์กชีตของคุณ ให้เลือกเซลล์ที่คุณต้องการเน้นข้อความที่ซ้ำกัน ซึ่งอาจเป็นหนึ่งช่วงหรือหลายช่วงที่ไม่ติดกันก็ได้
    2. กด Alt + F8
    3. เลือกมาโครที่สนใจแล้วคลิก เรียกใช้ .

    4. มาโครจะขอให้คุณระบุตัวคั่นที่แยกค่าในเซลล์ที่เลือก ตัวคั่นที่กำหนดไว้ล่วงหน้า (เครื่องหมายจุลภาคและเว้นวรรคในกรณีของเรา) จะปรากฏในช่องป้อนข้อมูลโดยอัตโนมัติ ขึ้นอยู่กับความต้องการของคุณ คุณสามารถปล่อยให้ตัวคั่นเริ่มต้นหรือพิมพ์ตัวคั่นอื่น จากนั้นคลิก ตกลง

    สักครู่ต่อมา สตริงที่ซ้ำกันทั้งหมดในส่วนที่เลือก เซลล์จะถูกแรเงาด้วยสีแดง (หรือสีแบบอักษรใดก็ตามที่ตั้งค่าไว้ในโค้ดของคุณ)

    เคล็ดลับ หากต้องการ ลบรายการที่ซ้ำกัน ภายในเซลล์อย่างรวดเร็ว คุณสามารถใช้ 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)

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้