VBA สั่ง Highlight ช่องสีที่มีตัวเลขเหมือนกันและค้ากัน เช่น 123 ,231 ,213 ให้เป็นสีแดง แต่ละชุดตัวเลขแตกต่างกันไป
Posted: Mon May 20, 2024 3:38 pm
VBA สั่ง Highlight เน้นเซลล์ ที่มีตัวเลขเหมือนกันและซ้ำกันใน Excel
ตัวอย่างเช่น 123,213,321,231 และ 301,103,310.130
แต่ละชุดตัวเลข เปลี่ยนสีที่แตกต่างกันไป
ผมแนบตัวอย่างโค๊ดและไฟล์ตัวอย่างมาให้
ขอบคุณอาจารย์มาก ๆ
ตัวอย่างเช่น 123,213,321,231 และ 301,103,310.130
แต่ละชุดตัวเลข เปลี่ยนสีที่แตกต่างกันไป
ผมแนบตัวอย่างโค๊ดและไฟล์ตัวอย่างมาให้
ขอบคุณอาจารย์มาก ๆ
Code: Select all
Sub Highlight_Duplicate_Entry()
Dim ws As Worksheet
Dim cell As Range
Dim myrng As Range
Dim clr As Long
Dim dict As Object
Dim colorIndex As Long
Dim cellRange As Variant
Dim rng As Variant
Dim fullRange As Range
Set ws = ThisWorkbook.Sheets("Sheet1")
' Define the ranges
cellRange = Array("A2:A29", "D2:D29", "G2:G29", "J2:J29", "M2:M29", "P2:P29", _
"A30:A59", "D30:D59", "G30:G59", "J30:J59", "M30:M59", "P30:P59")
' Combine all ranges into one
For Each rng In cellRange
If fullRange Is Nothing Then
Set fullRange = ws.Range(rng)
Else
Set fullRange = Union(fullRange, ws.Range(rng))
End If
Next rng
Set dict = CreateObject("Scripting.Dictionary")
colorIndex = 3 ' Start coloring from color index 3
' Clear existing colors
fullRange.Interior.ColorIndex = xlNone
' Loop through each cell in the combined range
For Each cell In fullRange
If cell.Value > 0 Then ' Only consider positive values
If Application.WorksheetFunction.CountIf(fullRange, cell.Value) > 1 Then
If Not dict.exists(cell.Value) Then
dict.Add cell.Value, colorIndex
colorIndex = colorIndex + 1
End If
cell.Interior.ColorIndex = dict(cell.Value)
End If
End If
Next cell
End Sub