查找包含在第二个范围内也以相同顺序存在的值的范围

时间:2011-10-22 02:15:32

标签: excel excel-vba vba

查找某个范围内的值的有效方法是什么,例如Range(“A1:A2”),它在第二个范围内以相同的顺序存在,例如Range(“B:B”)。

到目前为止,我的搜索只提出了两种可能性: 1)使用循环迭代第二个范围。 2)使用范围(“B:B”)。查找以搜索“A1”中的值,然后测试连续单元格中A2的值。范围(“B:B”)中的值不是唯一的,因此需要在找不到任何内容之前继续查找。

我还有其他选择吗?

1 个答案:

答案 0 :(得分:4)

虽然(2)听起来很明智,但另一种快速方法是将B1和B2连接成工作栏中的单个单元格(手动或使用VBA),重复B2和B2。 B3等,然后在单个查找中匹配组合字符串

<强> [更新]

你可以像这样使用工作栏。 || concatenator用于避免错误匹配,错误检查处理无匹配情况

Sub ConCatMatch()
    Dim rng1 As Range
    Dim X
    Set rng1 = Range([b1], Cells(Rows.Count, "B").End(xlUp))
    rng1.Offset(0, 1).Columns.Insert
    With rng1.Offset(0, 1)
        .FormulaR1C1 = "=RC[-1]&""||""&R[1]C[-1]"
        X = .Value2
        .EntireColumn.Delete
    End With
    If IsError(Application.Match([a1].Value & "||" & [a2].Value, X, 0)) Then
        MsgBox "No match", vbCritical
    Else
        MsgBox "Match starting at " & rng1.Cells(1).Offset(Application.Match([a1].Value & "||" & [a2].Value, X, 0) - 1, 0).Address(0, 0)
    End If
End Sub

enter image description here