查找某个范围内的值的有效方法是什么,例如Range(“A1:A2”),它在第二个范围内以相同的顺序存在,例如Range(“B:B”)。
到目前为止,我的搜索只提出了两种可能性: 1)使用循环迭代第二个范围。 2)使用范围(“B:B”)。查找以搜索“A1”中的值,然后测试连续单元格中A2的值。范围(“B:B”)中的值不是唯一的,因此需要在找不到任何内容之前继续查找。
我还有其他选择吗?
答案 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