【发布时间】:2020-08-03 04:34:01
【问题描述】:
我想从 B 列中的商品列表中找到商品的最高价格,从 C 列中找到商品的最低价格。
我通过使用带有 MIN 和 MAX 函数的数组公式获得所需的结果。但是我更喜欢非数组公式。 F2和G2中的Array Forumals分别是:
=MIN(IF(A$2:A$15=E2,C$2:C$15,""))
=MAX(IF(A$2:A$15=E2,B$2:B$15,""))
我可以使用Index 和MIN 函数使用非数组函数获得所需的最小值。但努力获得最大值并没有产生预期的结果。提到了H2和I2中的最小值和最大值的公式。
=MIN(INDEX((C$2:C$15)+(A$2:A$15<>E2)*1E+99, , ))
=MAX(INDEX((B$2:B$15)+(A$2:A$15<>E2)*1E+99, , ))
请求帮助在公式=MAX(INDEX((B$2:B$15)+(A$2:A$15<>E2)*1E+99, , )) 中进行适当修改,以从 B 列中获取项目的最大值,该值目前给出 1E99 作为结果。
我的数据和相应的结果如下。
A B C E F G H I
Prod_ID High_Pr Low_Pr Prod_ID Min_Pr1 Max_Pr1 Min_Pr2 Max_Pr2
A1 1050 1050 A1 1038 1058 1038 1E99
A1 1058 1058 A2 2110 2122 2110
A1 1048.5 1048.5 A3 1958 1962 1958
A1 1045 1045
A1 1040 1040
A1 1038 1038
A1 1040.99 1039
A2 2122 2115.01
A2 2112 2112
A2 2114.5 2110
A2 2110 2110
A3 1962 1958.1
A3 1960 1958.1
A3 1958 1958
编辑
我将A2:A15 的命名范围定义为Prod_ID,将B2:B15 的范围定义为High_Pr。然后我在I2 中使用了AGGREGATE 函数,如下所述,并将其进一步复制下来。这给出了预期的结果。我仍然期待更好的方法。
=AGGREGATE(14,6,High_Pr*(Prod_ID=E2),ROW(E2)-ROW(E1))
获得的结果快照附在下面。
【问题讨论】:
标签: excel excel-formula