VBA使用通配符查找行中的值
我试图做一个循环(我是非常新的VBA),在列A中检查单词“苹果”。列A包含水果名称。 当find“Apple”时,则代码将范围“H2:S2”复制到列G以及列A中相应的行值。
但是,当search标准部分更改为通配符时,代码将不会运行(我的目标是包含单词“存在”的行)。
lookupVal = "Apple" 'Works lookupVal = "*Apple*" 'Nothing happens
我应该如何调整下面的代码,使其通配符运行,或者有比这个代码状态更好的解决scheme来实现结果?
完整代码:
Sub CopypasteValues() Dim i, j, lastrowA As Long Dim lookupVal As String 'finds the last row in Column A lastrowA = Sheets("Dataset").Cells(Rows.Count, "A").End(xlUp).Row 'loop over values in Sheet "Dataset" For i = 1 To lastrowA lookupVal = "Apple" 'Define search critera For j = 1 To lastrowA currVal = Sheets("Dataset").Cells(j, "A") If lookupVal = currVal Then ValueCopy = Range("G2:S2").Copy 'Range to copy Sheets("Dataset").Cells(j, "G") = Range("G" & j).PasteSpecial End If Next j Next i End Sub
你可以使用Like
运算符:
If currVal Like lookupVal Then
所以,如果lookupVal
是"*Apple*"
而currVal
是"Aren't Apples nice to eat"
,testing将是True
。
您可能还需要使用
If LCase$(currVal) Like LCase$(lookupVal) Then
如果你想避免大小写敏感的问题。
您也可以考虑使用Find
(根据需要使用LookAt:=xlPart
或LookAt:=xlWhole
参数),而不是逐个比较。 但这要取决于你的要求是否是一个可行的解决scheme。