我使用了两个IF函数来查找范围的最大值,但是如果我使用AND函数对函数进行了些微更改,则返回0。请帮忙。
这有效并返回整数:
question-div
这个总是返回0:
{=MAX(IF(MONTH(A58:A67)=MONTH(K50),IF(YEAR(A58:A67)=YEAR(K50),B58:B67)))}
答案 0 :(得分:1)
大多数人不能在数组上下文中正确使用AND
。
在您的示例中
IF(MONTH(A58:A67)=MONTH(K50),IF(YEAR(A58:A67)=YEAR(K50),B58:B67))
评估为
IF({TRUE;FALSE;TRUE;FALSE;...;FALSE}, IF({FALSE;TRUE;TRUE;FALSE;...;TRUE}, {B58:B67}))
取决于MONTH(A58:A67)=MONTH(K50)
是TRUE
还是FALSE
,而YEAR(A58:A67)=YEAR(K50)
是TRUE
还是FALSE
。
这意味着如果第一个是TRUE
,然后检查第二个,如果第二个也是TRUE
,则将数组{B58:B67}
中的相应值放入MAX
中,否则将FALSE
的{{1}}放入0
。
但是
MAX
评估为
IF(AND(MONTH(A58:A67)=MONTH(K50),YEAR(A58:A67)=YEAR(K50)),B58:B67)
因此,两个IF(AND({TRUE;FALSE;TRUE;FALSE;...;FALSE},{FALSE;TRUE;TRUE;FALSE;...;TRUE}),{B58:B67})
数组都在{TRUE;FALSE;...}
中,并且如果两个数组中都没有单个AND
,则只有{{1} }}在TRUE
中算作FALSE
。
即使两个数组中都不存在单个FALSE
,但整个数组0
始终是MAX
中的结果。