Excel最小function不起作用
我有一个数组,我试图返回最大和最小时间对应于input到O12的参考编号。
我想这样,当我input10到O12我的最大function给我3点,我的分钟给我1点
A-----B-----C 10----------1:00 10----------3:00
{=MAX(INDEX((A6:A200=O12)*(C6:C200),0))} {=MIN(INDEX((A6:A200=O12)*(C6:C200),0))}
我的最大function完美工作,并返回最高的数字,但我的最低function总是显示零。
当你使用这个“产品”版本,而不是一个IF语句时,任何一个你的两个testing都返回一个FALSE的行将会产生一个零结果。 这是因为,当采取布尔的产品,TRUExFALSE = 0和FALSExTRUE = 0。 因此,传递给MIN的数组将包含可能的许多零,从而导致不良结果。
使用一个IF语句,必须在一个数组公式中,这些相同的行被分配一个布尔FALSE,而不是零。 而且,由于MIN忽略布尔值,所以这个设置保证了正确的结果。
作为一个例子,只是考虑一个范围的A6:C10,让我们假设我们有以下值:
O12: “X”
A6 🙁 空白) A7 🙁 空白) A8: “X” A9:( 空白) A10: “X”
C6: 74 C7: 64 C8: 99 C9: 58 C10: 65
非数组公式:
=MIN(INDEX((A6:A10=O12)*(C6:C10),0))
将解决为:
=MIN(INDEX(({"";"";"X";"";"X"}=O12)*(C6:C10),0))
这是:
=MIN(INDEX(({FALSE;FALSE;TRUE;FALSE;TRUE})*(C6:C10),0))
即:
=MIN(INDEX({0;0;99;0;65},0))
(由于C6,C7和C9中的值乘以FALSE,所以它们的结果是0)
即:
=MIN({0;0;99;0;65})
这显然是0。
但是,等效的数组公式:
=MIN(IF(A6:A10=O12,C6:C10))
解决为:
=MIN(IF({"";"";"X";"";"X"}=O12,C6:C10))
这是:
=MIN(IF({FALSE;FALSE;TRUE;FALSE;TRUE},C6:C10))
即:
=MIN(IF({FALSE;FALSE;TRUE;FALSE;TRUE},{74;64;99;58;65}))
即:
=MIN({FALSE;FALSE;99;FALSE;65})
根据需要,这次是65。
如果你真的不想使用一个数组公式(虽然我不明白为什么会这样 – 所需的按键组合,除了许多人似乎并没有意识到,这种解决方法,采用插入一个(额外)INDEX函数没有比数组设置更有效),那么如果你有Excel 2010或更高版本,你可以使用AGGREGATE,即:
=AGGREGATE(15,6,C6:C10/(A6:A10=O12),1)
问候
你正在检查最小的东西或0.因为你正在寻找的东西是积极的,每次0胜。 尝试使用大量比较,例如
{=MIN(INDEX((A6:A200=O12)*(C6:C200),2E99))}