在索引(匹配)数组中查找最小值 [EXCEL]

Posted

技术标签:

【中文标题】在索引(匹配)数组中查找最小值 [EXCEL]【英文标题】:Finding minimum value in index(match) array [EXCEL] 【发布时间】:2016-08-25 12:16:00 【问题描述】:

这是我的简单表格

A                           B               C
tasmania                   hobart            21
queensland                 brisbane          22
new south wales            sydney            23
northern territory         darwin            24
south australia            adelaide          25
western australia          perth             26
tasmania                   hobart            17
queensland                 brisbane          18
new south wales            sydney            19
northern territory        darwin             11
south australia           adelaide           12
western australia         perth              13

索引匹配数组公式:

=INDEX(A2:C9,MATCH(1,(H4=$A:$A)*(I4=$B:$B),0),3)

基本上 A 和 B 是我的查找条件,而 C 是我想要获得的值。我希望 C 是匹配的 C 值中的最小值。

例如。 如果我将塔斯马尼亚和霍巴特作为我的标准,我希望得到 17,因为它是最小值,而不是 21。

我尝试将MIN 嵌套在索引匹配数组(H4=$A:$A)*(I4=$B:$B)*(MIN($C:$C)) 中,但这只会导致错误

【问题讨论】:

【参考方案1】:

这与其说是INDEX,不如说是MIN(IF...。在SUMIFCOUNTIFExcel 中实现之前,甚至SUM(IF...COUNT(IF... 都必须以这种方式使用。

由于到目前为止还没有MINIFS,为此我们必须进一步使用:

=MIN(IF($A$1:$A$1000=H4,IF($B$1:$B$1000=I4,$C$1:$C$1000,NA())))

这是一个数组公式。将其输入到没有大括号的单元格中,然后按[Ctrl]+[Shift]+[Enter]确认。大括号应该会自动出现。

【讨论】:

既然我们现在有了 MINIFS,请问您可以使用 MINIFS 更新答案吗? @Vylix:谁有MINIFS?只有那些拥有最新Excel 的人。对于那些MINIFS function 的记录非常好,不是吗? 似乎我误解了这个问题,并认为这是一个非常复杂的公式。它只是具有 2 个条件的 MIN。谢谢!【参考方案2】:

以AGGREGATE function 作为标准公式,

=AGGREGATE(15, 6, C2:INDEX(C:C, MATCH(1E+99,C:C ))/((A2:INDEX(A:A, MATCH(1E+99,C:C ))=F2)*(B2:INDEX(B:B, MATCH(1E+99,C:C ))=G2)), 1)

    

作为旧式标准公式,您的原始公式看起来像,

=MIN(INDEX(C2:C13+((H4<>A2:A13)+(I4<>B2:B13))*1E+99, , ))

【讨论】:

智能公式,但为什么不直接=MIN(IF((F2=A2:INDEX(A:A,MATCH(1E+99,C:C)))*(G2=B2:INDEX(B:B,MATCH(1E+99,C:C))),C2:INDEX(C:C,MATCH(1E+99,C:C))))作为数组呢? Axel 在另一个答案中做了数组公式。我坚持使用非数组样式。 你的 furmula 也是数组样式的(只是没有 CSE)。真正的技巧应该是C2:INDEX(C:C, MATCH(1E+99,C:C )),它允许在数组中使用整列而不冻结excel;) 是的,好点。我的两个公式都在其 数组样式 中使用函数。我应该说明 CSE 和非 CSE。

以上是关于在索引(匹配)数组中查找最小值 [EXCEL]的主要内容,如果未能解决你的问题,请参考以下文章

在给定数组中查找最小值和最大值,其中约束应最小值索引应小于其最大值

我是不是在查找数组中最小值的索引时引用或实例错误?

在javascript中的数组中查找多个最小值的索引

在索引 0 为 0 的数组中查找非零最小值 C++

Kotlin - 在索引范围内的 IntArray 中查找最小值

在矩阵中查找最小值的索引