VBA发现类似于范围和粘贴的值

时间:2015-03-26 16:45:24

标签: excel vba excel-vba

我对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

谢谢

2 个答案:

答案 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,但如果您只是简单地比较值,则可能不是您需要的。