如何从多准则索引/匹配函数中获得最小结果

时间:2019-06-25 05:57:34

标签: excel indexing match

我有一张有交易记录的表。每个TXN都有一个机场和一定数量的燃油。我在第二张工作表中列出了位置列表,其中每一行都有燃油带的最小值和最大值(例如1-500、501-1000,最小值/最大值存储在单独的列中),每一个都有一个价格(每加仑燃油)。

我需要使用第一个电子表格中的每行值在第二个电子表格中搜索机场(ICAO代码)上的匹配项,该匹配项大于带的底部,小于带的顶部,然后返回汽油。问题是我可以进行多次匹配,并且需要最小/最小值。

我对Index / Match多条件数组有一定的了解。因此,我编写了以下内容并进行了尝试:

=INDEX(FuelPrices!$D$2:$D$3398,MATCH(1,(FuelPrices!A:A=H2)*(FuelPrices!B:B>=N2)*(FuelPrices!C:C<=N2),0))

在“ Fuel”是我的第一个表,而“ FuelPrices”是我要在其中查找值的表。无论执行什么操作,都会引发#NA错误。所以,我想也许问题出在我要返回一个数组吗?我尝试过:

=INDEX(FuelPrices!$D$2:$D$3398,SMALL(MATCH(1,(FuelPrices!A:A=H2)*(FuelPrices!B:B>=N2)*(FuelPrices!C:C<=N2),0),1))

弄清楚它会给我返回数组中的最小值。不行我尝试了其他技巧(在比赛中使用另一个Index函数),但似乎无济于事。

基本上,我只是想让函数返回所提供条件的最低匹配值。

This is my main fuel txns sheet, Fuel

The fuel pricing sheet I'm looking to get a value from, FuelPrices

1 个答案:

答案 0 :(得分:0)

简短的答案是<和>绕错了方向。这确实给出了答案

=INDEX(FuelPrices!$D$2:$D$10,MATCH(1,(FuelPrices!$A$2:$A$10=H2)*(FuelPrices!$B$2:$B$10<=N2)*(FuelPrices!$C$2:$C$10>=N2),0))

如果使用 Ctrl Shift Enter

作为数组公式输入

出于测试目的,我已将所有范围更改为少量行。

燃油价格表

enter image description here

燃油表

enter image description here

如果您希望在相同条件下找到最小的主题,则不需要索引,但可以使用较小(或最小)的

=SMALL(IF((FuelPrices!$A$2:$A$10=H2)*(FuelPrices!$B$2:$B$10<=N2)*(FuelPrices!$C$2:$C$10>=N2),FuelPrices!$D$2:$D$10),1)

或者,如果您愿意,可以使用Aggregate(非数组公式)

=AGGREGATE(15,6,FuelPrices!$D$2:$D$10/((FuelPrices!$A$2:$A$10=H2)*(FuelPrices!$B$2:$B$10<=N2)*(FuelPrices!$C$2:$C$10>=N2)),1)