Excel 使用VBA,如何高亮显示一张图纸上一列列表中的值(如果该值存在于另一张图纸的范围内)
我在“a”页的一列中有一个ID列表。在活页“B”上,我将这些ID分布在一个表格(a范围)中。如何搜索范围以查看表A中列出的每个值是否存在于表B中?我想确保工作表A中一列中的所有值都存在于工作表B中。这个宏应该检查并突出显示确实存在的值。因此,任何不存在的值都不会突出显示,我可以很容易地解决。目前,我们正在手动更新,但我需要它是动态的,因为我们正在做许多更改 下面是我到目前为止尝试过的,但我得到了一个“下一个没有为”的错误。我已经用vba编写了代码,但已经很长时间了。感谢您的帮助。 顺便说一句,直到我开始工作,我才真正关心它的颜色,所以我只选择了一个数字Excel 使用VBA,如何高亮显示一张图纸上一列列表中的值(如果该值存在于另一张图纸的范围内),excel,vba,Excel,Vba,我在“a”页的一列中有一个ID列表。在活页“B”上,我将这些ID分布在一个表格(a范围)中。如何搜索范围以查看表A中列出的每个值是否存在于表B中?我想确保工作表A中一列中的所有值都存在于工作表B中。这个宏应该检查并突出显示确实存在的值。因此,任何不存在的值都不会突出显示,我可以很容易地解决。目前,我们正在手动更新,但我需要它是动态的,因为我们正在做许多更改 下面是我到目前为止尝试过的,但我得到了一个“下一个没有为”的错误。我已经用vba编写了代码,但已经很长时间了。感谢您的帮助。 顺便说一句,直
Sub CaseIdCheck()
Dim i, j, x As Integer
Dim intValueToFind, testCaseId, tciPass1, tciPass2 As String
Dim range1, range2 As Range
range1 = Application.GotoActiveWorkbook.Sheets("B").Range("C4:U50")
range2 = Application.GotoActiveWorkbook.Sheets("A").Range("i3:i145")
For x = 1 To ActiveWorkbook.Sheets("A").CountA(Columns(9))
If Cells(x, 9).Value <> Null Then
testCaseId = Sheets("A").Cells(x, 9).Value
For i = 1 To 100
For j = 1 To 100
If Sheets("B").Cells(i, j).Value = testCaseId Then
Sheets("A").Cells(x, 9).Interior.ColorIndex = 36
Else
Next j
Next i
End If
Next x
Else
MsgBox ("end")
End Sub
Sub-CaseIdCheck()
尺寸i,j,x为整数
Dim intValueToFind、testCaseId、tciPass1、tciPass2作为字符串
变光范围1,范围2作为范围
range1=Application.GotoActiveWorkbook.Sheets(“B”).范围(“C4:U50”)
range2=Application.GotoActiveWorkbook.Sheets(“A”).Range(“i3:i145”)
对于x=1到ActiveWorkbook.Sheets(“A”).CountA(第(9)列)
如果单元格(x,9).Value为空,则
testCaseId=表(“A”).单元格(x,9).值
对于i=1到100
对于j=1到100
如果表(“B”).单元格(i,j).Value=testCaseId,则
板材(“A”)。单元(x,9)。内饰。颜色指数=36
其他的
下一个j
接下来我
如果结束
下一个x
其他的
MsgBox(“结束”)
端接头
是否需要使用VBA?您可以通过命名范围和条件高亮显示来实现这一点
创建一个新的命名范围(我们称之为rngCheck
),该范围使用以下命名范围公式定义:
=B!$1:$1048576
然后将此条件格式应用于工作表“A”第I列:
=COUNTIF(rngCheck,I1)>0
然后选择所需的颜色(ColorIndex 36的RGB为R 255、G 255、B153)我认为可能会出现错误,因为您有
If
块和For
块。你试过重新排序代码吗?没有,但它在“下一个J”部分给了我错误。我是按逻辑写的,我认为应该是这样的。从表A中提取值如果不为空,检查表B上的值范围,如果存在,则突出显示工作表A上的单元格。冲洗并重复检查是否为空的原因,这样我就不会在工作表A中出现一百万个彩色空白单元格。B上的空白单元格范围就是这样。删除上面的Else
Next j
,用end if
替换它,我假设你的=B$。。。语句是否用于整个工作表?我需要检查的表B中的数据是多列多行的。我会在等待你的回答时试一试。是的,=B$1:$1048576
为整张。如果只是针对特定的列和行,可以使用=B$C$4:$U$50
刚刚试用过,它正是我想要的(我可以再增加字体大小吗?)。非常感谢你!