A列包含名称。 B列包含值。列A中的每个名称在列B中都有许多值。我想确保列A中的每个唯一名称都包含值" 1600460116"在B.如果A列中的名称没有值" 1600460116",那么我需要突出显示它。
到目前为止,我在" 1600460116"的值时突出显示了A列和B列。出现:
For i = 2 To sh4lRow
If InStr((sh4.Cells(i, dealID)), "1600460116") > 0 Then
sh4.Cells(i, dealID).Interior.ColorIndex = 3
sh4.Cells(i, ioNameB).Interior.ColorIndex = 3
Else: sh4.Cells(i, dealID).Interior.ColorIndex = 2
End If
Next i
(注意:ioName B是A列,dealID是B列)
我认为我需要遍历每个循环的名称并将唯一的名称放入变量中。然后我想我需要循环突出显示的列B值并将这些唯一的A名称放入另一个变量中。然后我需要找到列表不匹配的位置。
有人可以帮我完成这段代码吗?
以下是我的excel文件:excel here
答案 0 :(得分:0)
好的 - 这里有几点,我在新专栏中使用了oldschool EXCEL FORMULA来创建组合colA和colB的字符串 - 新col是变量x,你必须为其设置一个值工作表上的任何空列(之后将删除)。通过这个新的col x,我在新专栏中创造了一个新的范围,即第2行到第2阶段。
一旦该字符串concat位于新列中,它将遍历colA中的名称并检查名称+ 1600460116是否存在于新列中的任何位置。如果没有,则突出显示黑名称(颜色2)。
此后它会从新列范围中删除任何公式。希望这是有道理的!
Dim x As Integer
Dim newRange As Range
With sh4
Set newRange = .Range(Cells(2, x).Address & ":" & Cells(sh4lRow, x).Address)
newRange.Formula = ("=INDIRECT(ADDRESS(ROW()," & ioNameB & "))&INDIRECT(ADDRESS(ROW()," & dealID & "))")
For i = 2 To sh4lRow
If Application.WorksheetFunction.CountIf(newRange, .Cells(i, 1).Value & "*1600460116*") = 0 Then
.Cells(i, ioNameB).Interior.Color = 2
End If
Next i
newRange.ClearContents
End With
我使用这种方法而不是循环遍历每一行的所有行,因为它更快了!