VBA使用通配符在行中查找值

时间:2017-05-18 21:49:08

标签: excel vba excel-vba find

我试图制作一个循环(我对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

1 个答案:

答案 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:=xlPartLookAt:=xlWhole参数),而不是进行逐个单元格的比较。但这完全取决于您的要求是否是可行的解决方案。