Excel VBA获取范围内与多个条件匹配的行号



我正试图在我的第一张工作表Sheet1中获得具有特定条件的行号的匹配,并复制格式并将其粘贴到查找值匹配的第二张工作表Sheet2中。

我在表1中有这样的数据:

标题A
A B
条件
1 color1
2 颜色2 B
3 颜色4 C
4 颜色2 D
5 颜色1 A
6 颜色2 D

这里有一篇关于这个问题的旧文章,但是(正如我之前在评论中提到的(在查找/匹配任何值时,连接值很少是个好主意。使用以下公式:

=MATCH(1,INDEX((Range1=Value1)*(Range2=Value2),),0)

在您当前的代码中,这将导致一个单一的更改:

mtch = Application.Match(lookup1, rng1, 0)

Into;

mtch = ws1.Evaluate("MATCH(1,(A:A=""" & lookup1.Value & """)*(B:B=""" & lookup2.Value & """),0)")

注意1:由于这是一个数组公式,它可能处理量很大,计算时间可能会变得相当长

注意2:工作表公式包含一个嵌套的INDEX(),不再需要它,因为Evaluate((将处理所有公式,就像它们是CSE输入的一样。

最新更新