VBA使用通配符在行中查找值
我试着做一个循环(我对VBA很陌生)来检查a列中的单词“Apple”。a列包含水果名称。当找到“Apple”时,代码将范围“H2:S2”复制到G列和A列中相应的行值 但是当搜索条件部分更改为通配符时,代码将不会运行(我的目标是包括存在单词Applecake的行) 我应该如何调整下面的代码,使其以通配符运行,或者可能有比此代码状态更好的解决方案来实现结果 完整代码:VBA使用通配符在行中查找值,vba,excel,find,Vba,Excel,Find,我试着做一个循环(我对VBA很陌生)来检查a列中的单词“Apple”。a列包含水果名称。当找到“Apple”时,代码将范围“H2:S2”复制到G列和A列中相应的行值 但是当搜索条件部分更改为通配符时,代码将不会运行(我的目标是包括存在单词Applecake的行) 我应该如何调整下面的代码,使其以通配符运行,或者可能有比此代码状态更好的解决方案来实现结果 完整代码: Sub CopypasteValues() Dim i, j, lastrowA As Long Dim looku
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
是“苹果不好吃吗”
,那么测试将是正确的
您可能还需要使用
If LCase$(currVal) Like LCase$(lookupVal) Then
如果您想避免区分大小写的问题
您也可以考虑使用<代码>查找< />代码(使用<<代码>查找:= xLtabs<代码>或<代码>查找:= xLtWord参数),而不是按单元格比较进行单元格比较。但这完全取决于您的要求,即这是否是一个可行的解决方案。您可以使用之类的操作符:
If currVal Like lookupVal Then
因此,如果lookupVal
是“*Apple*”
,currVal
是“苹果不好吃吗”
,那么测试将是正确的
您可能还需要使用
If LCase$(currVal) Like LCase$(lookupVal) Then
如果您想避免区分大小写的问题
您也可以考虑使用<代码>查找< />代码(使用<<代码>查找:= xLtabs<代码>或<代码>查找:= xLtWord参数),而不是按单元格比较进行单元格比较。但这完全取决于您的要求,以及这是否是一个可行的解决方案。非常感谢!!!!这对我来说太完美了。非常感谢你指出了区分大小写的问题,很高兴知道。我现在还没有遇到过它,但可能会遇到。我曾尝试使用查找
,但在我的知识阶段仍然很难,我无法使它正常工作。@Wiz-对于初学者来说,虽然你没有太多可能导致速度问题的数据,但像
这样使用肯定是“最简单”的选择。是的,我也这么认为。我在大约700行和1列之间循环。仍然比手动操作快得多。但是我明白你的观点,因为我有很多矩阵或者更多的行。非常感谢!!!!这对我来说太完美了。非常感谢你指出了区分大小写的问题,很高兴知道。我现在还没有遇到过它,但可能会遇到。我曾尝试使用查找
,但在我的知识阶段仍然很难,我无法使它正常工作。@Wiz-对于初学者来说,虽然你没有太多可能导致速度问题的数据,但像
这样使用肯定是“最简单”的选择。是的,我也这么认为。我在大约700行和1列之间循环。仍然比手动操作快得多。但我看到你的观点是,矩阵很大或/和行更多。旁注:确保为每个变量指定一个类型。使用Dim i,j,lastrowA As Long
只将最后一个声明为Long
前两个仍然是Variant
:使用Dim i As Long,j As Long,lastrowA As Long
来声明所有类型的3个Long
。谢谢您的指出!!旁注:确保为每个变量指定类型。使用Dim i,j,lastrowA As Long
只将最后一个声明为Long
前两个仍然是Variant
:使用Dim i As Long,j As Long,lastrowA As Long
来声明所有类型的3个Long
。谢谢您的指出!!