我对VBA很新,只了解基本原则,所以使用我使用的代码可能无法实现。我有一些代码用于在Sheet1中使用Sheet2的范围查找值,该范围将entiore行粘贴到Sheet3。我怎么能修改它,以便它仍然会根据类似的值粘贴行而不是完全匹配,所以如果" Company Ltd"在Sheet1中,只有公司在该范围内。我已经尝试过通配符语句,但无法让它们与范围一起使用。谁能指出我正确的方向?
Option Compare Text
Sub Find_Values()
Dim c1 As Range, rng1
Dim c2 As Range, rng2
Dim lastrow As Long
Set rng1 = Range("sheet1!a1:a10")
Set rng2 = Range("sheet2!a1:a10")
For Each c2 In rng2
For Each c1 In rng1
If c1 = c2 Then
c1.EntireRow.Copy
Sheets("sheet3").Activate
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
Range("a" & lastrow + 1).Select
ActiveSheet.Paste
End If
Next c1
Next c2
End Sub
谢谢
答案 0 :(得分:0)
要查找字符串是否存在于另一个字符串中,请使用InStr function。例如,
Dim stringPosition As Integer
stringPosition = InStr("Company Ltd", "Company")
If stringPosition > 0 Then
' we found a match
End If
答案 1 :(得分:0)
Sam试图说的是修改这一行:
If c1 = c2 Then
您可以使用:
If InStr(c1,c2) > 0 Then '...
您也可以使用
If InStr(c1,c2) > 0 or InStr(c2,c1) > 0 or UCase(c2) = UCase(c1) Then '...
等
您可以在此行代码中添加许多不同的比较。
如果您只对值感兴趣,则将两个值都设为大写是一种比较好的方法。
您还可以更改代码(非常显着)以使用find关键字,该关键字允许您使用通配符并使用xlWhole和xlPart进行搜索
这实际上取决于差异是什么以及您想要更改多少代码。
您可能也有兴趣使用Like Operator,但如果您只是简单地比较值,则可能不是您需要的。