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

标签 vba excel find

我试图创建一个循环(我对 VBA 很陌生)来检查 A 列中的“Apple”一词。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

最佳答案

您可以使用 Like运算符(operator):

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

关于VBA使用通配符在行中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44058297/

相关文章:

scripting - 如何在 Solaris 上的 find 命令中排除完整目录路径列表

bash - 使用shell修改文件夹及其所有子文件夹中的文件

vba - 仅包含一个元素的数组的 For 循环

vba - 用于更新 Word 文档中所有字段的宏

vba - Concat 宏不起作用,编码错误

excel - 当特定列更新为 "YES"且电子邮件 ID 从同一工作表中的另一列获取时,Google 工作表的电子邮件触发器

vba - vba中发生意外错误(类型不匹配和无效的过程,调用或参数)

wcf - 如何将大文件从 MS Word 插件 (VBA) 传输到 Web 服务器?

excel - VBA检查Sharepoint文件夹是否存在

regex - 查找 "StringBetween"整个目录 linux cli