我有一个数组,我试图返回与输入O12的参考号相对应的最大和最小时间。
我想要它,这样当我输入10进入O12时,我的最大功能给了我3:00而我的分给了我1:00
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))}
我的最大功能完美运行并返回最高数字,但我的最小功能始终显示为零。
答案 0 :(得分:0)
当您使用此“产品”版本而不是IF语句时,您的两个测试中的任何一个返回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)
此致
答案 1 :(得分:-1)
你正在检查某事物的最小值或0.因为你正在寻找的东西是正面的,每次都会获胜。尝试使用大数字进行比较,例如
{=MIN(INDEX((A6:A200=O12)*(C6:C200),2E99))}