我试图制作一个循环(我对VBA很新),检查单词" Apple"在A列中。列A包含水果名称。什么时候" Apple"找到,然后代码是复制范围" H2:S2"列G和列A中相应的行值。
但是当搜索条件部分更改为通配符时,代码将不会运行(我的目标是包含Applecake一词所在的行)。
lookupVal = "Apple" 'Works
lookupVal = "*Apple*" 'Nothing happens
我应该如何调整下面的代码,以便它使用通配符运行,或者可能有一个比此代码状态更好的解决方案来实现结果?
完整代码:
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
答案 0 :(得分:4)
您可以使用Like
运算符:
If currVal Like lookupVal Then
因此,如果lookupVal
为"*Apple*"
且currVal
为"Aren't Apples nice to eat"
,则测试为True
。
您可能还需要使用
If LCase$(currVal) Like LCase$(lookupVal) Then
如果您想避免区分大小写的问题。
您还可以考虑使用Find
(根据需要使用LookAt:=xlPart
或LookAt:=xlWhole
参数),而不是进行逐个单元格的比较。但这完全取决于您的要求是否是可行的解决方案。