Excel索引返回符合多个条件的多个值

时间:2016-12-07 03:24:54

标签: excel vba multidimensional-array indexing match

索引和匹配不会返回多个值需要找到一种方式,无论是函数还是VBA。

基本上我有一个索引和匹配函数,它查看两个变量,然后从不同的工作表中返回匹配的相应公司。

即你选择"澳大利亚"从下拉,然后"黄金"从另一个下降,然后指数和匹配将从另一张在澳大利亚运营的公司拉动一家公司并开采金牌。 到目前为止,该功能有效,但它只返回第一个结果,可能有多个公司,我还没有想出如何返回多个结果。

目前的代码如下:

=INDEX(Datapage!B$2:B$280,MATCH(1,(A$8=Datapage!$C$2:$C$280) * (B$8=Sheet11!$D$2:$D$280),0))

我也试过这个:

= IFERROR(INDEX(Table26 [[位置]:[商品],SMALL(IF(Table26 [位置] = $ B8,ROW(Table26 [商品]) - ROW($ d $ 2)+1),COLUMNS ($ B14:B14))),"&#34) 数据表的值为B2 - D280

但没有任何反应,它只搜索一个对此需求无用的变量。

B是公司名称

C是位置

D是Commodity

我附上了一些照片以供澄清

这就是纸张的样子

Data page containing the names of companies

Search page

任何帮助将不胜感激! 谢谢

1 个答案:

答案 0 :(得分:1)

对于任何有兴趣的人,我想出了一个不需要任何VBA的功能。

=IFERROR(INDEX(Data!$B$2:$B$280, SMALL(IF($A$8&" "&$B$8=Data!$A$2:$A$280, ROW(Data!$B$2:$B$280)-1,""), ROW()-14)),"")

如果找到匹配项,B列中的第一个数据就是我想要返回的数据。

“小(IF(A ...”)功能正在组合我想要匹配的两个变量。即A =澳大利亚& B = GOLD等等,它会在下一个寻找匹配片材。

“ROW(Data ...”将单元格A8和B8中的值与范围中的每个值进行比较。如果找到匹配,则“ROW(数据!$ B $ 2:$ B $ 280)-1”返回相应行的编号(-1用于扣除标题行)。如果比较的值不匹配,则IF函数返回空字符串。

“ROW() - 14)),”“”函数充当增量计数器。由于公式被复制到单元格A15中,我们为函数添加-14,为单元格A15(第15行减去14)返回1,为单元格A16(第16行减去15)返回15,等等