2017-04-21 439 views
0

我想找到匹配位于两列和我的代码中的数组中的两个条件的第一个行号。Excel VBA匹配查找匹配数组中包含的多个条件的第一个行号

例如:

market = Array("market1", "market2", "market3"...) 
report = Array("report1", "report2", "Report3"...) 

rownumber = Application.Match(Range("B:B" & "L:L"), market(i) & report(z)) 
ws2.Range("N2").Value = rownumber 

是有办法做到这一点?让我知道如果你需要任何东西

在此先感谢

+0

您需要将'Application.Match'嵌套在另一个中。 –

+0

@ShaiRado作为MATCH返回一个很长的时间,如何将一个嵌套到另一个工作中?我不遵循逻辑,所以我很好奇。 –

回答

1

这是一个数组公式,因此它不能与Application.Match来完成。您可以使用评估。

market = Array("market1", "market2", "market3"...) 
report = Array("report1", "report2", "Report3"...) 
Dim rownumber As Variant 
rownumber = ws2.Evaluate("IFERROR(Match(""" & market(0) & report(0) & """,B:B & L:L, 0),""Not Found"")") 
ws2.Range("N2").Value = rownumber 

如果没有上ws2变化ws2.Evaluate前面到其上的数据被发现,在工作表中发现的搜索范围。

但是,当使用数组公式时,不应该使用完整的列引用,试图找到数据的范围并引用那些单元格。

+0

感谢斯科特,但是当运行该代码时,我返回一个#value - 请通知 – messi1335

+0

@ messi1335请参阅编辑。我有'()'在错误的地方。 –

+0

就像一个魅力..非常感谢你斯科特 – messi1335