【发布时间】:2021-07-28 18:36:36
【问题描述】:
我从某人那里获得了以下宏,并尝试对其进行修改以适合我的目的。
我正在尝试更改此宏以查找并突出显示每个单元格中具有重复值的单元格, 例如,它应该突出显示 B62 和 B63(绿色), 并将重复值设置为红色(即 B62 中的 B_HWY_1010 和 B63 中的 B_HWY_1015)
Sub Dupes()
Dim d As Object
Dim a As Variant, itm As Variant
Dim i As Long, k As Long
Dim rng As Range
Dim bColoured As Boolean
Set d = CreateObject("Scripting.Dictionary")
Set rng = Range("B1", Range("B" & Rows.Count).End(xlUp))
a = rng.Value
For i = 1 To UBound(a)
For Each itm In Split(a(i, 1), ",")
d(itm) = d(itm) + 1
Next itm
Next i
Application.ScreenUpdating = False
For i = 1 To UBound(a)
k = 1
bColoured = False
For Each itm In Split(a(i, 1), ",")
If d(itm) > 1 Then
If Not bColoured Then
rng.Cells(i).Interior.Color = vbGreen
bColoured = True
End If
rng.Cells(i).Characters(k, Len(itm)).Font.Color = RGB(244, 78, 189)
End If
k = k + Len(itm) + 1
Next itm
Next i
Application.ScreenUpdating = True
End Sub
感谢任何帮助或建议。
【问题讨论】:
-
“重复的逗号分隔文本”是什么意思?只有一个分隔元素与另一个单元格中的另一个元素相同?还是整个字符串,即使它包含逗号分隔符也是一样的?
-
@FaneDuru 简而言之,我试图在单个单元格中查找重复项,而不是与任何其他单元格进行比较。因此,如果您查看帖子中的图像,第 62 行有一个输入两次的值,用逗号分隔,所以在这种情况下,我希望宏能够识别它并突出显示它
-
如果有两个这样的相同字符串(在一个单元格中)而第三个不同呢?会被标记为重复吗?
-
@FaneDuru 是的,它也必须识别这一点。假设一个单元格有:A、B、C、B,那么它应该识别并突出显示第二个“B”
-
突出显示第二个“B”,还是讨论中的单元格?你图片中的绿色内部颜色是什么意思?
标签: vba loops duplicates csv