E10的公式为:=SUMIF(IF(B1:B11="a","",A1:A11),"*1*",C1:C11) E11的公式为:=SUMIF(IF(B1:B11="b",A1:A11,""),"*1*",C1:C11) 前面gdliyy版主已经解释过了,sumif不支持数组参数的运算,必须是引用。 现在,我们先抛开不管这个excel内部的约定,假设sumif函数支持数组,但此时第一参数为IF(B1:B11="b",A1:A11,""),这就决定了如果要使用if的判断结果作为参数,那么整个公式必须是一个数组公式,也就是Ctrl+Shift+Enter结束生成的数组公式,但鱼版主的两个公式都是普通公式,所以if判断的返回结果并不是一个意料中的数组,来参与整个公式的运算。 那么17的结果是怎么出来的呢?因为是普通公式,所以if函数没有完全起作用,整个IF(B1:B11="b",A1:A11,"")其实就相当于一个IF(B11="b",A1:A11,"")的区域引用(其中B11,11的位置是由公式所在行决定的),所以跟B列整列数据没有关系,而只与公式所在行的那个B列值有关。这样也就可以解释为什么E10的公式就不能得出结果:如果把E10中的IF(B1:B11="a","",A1:A11)改成IF(B1:B11="b","",A1:A11),一样可以得到17的结果,因为B10为“a”。 回过头来,如果把E10和E11的公式都加上Ctrl+Shift+Enter的话,那么所有的结果都是#Value!了,这才是系统告知:sumif函数不支持数组参数。 话再说回来,"假设sumif函数支持数组"这个假设本身就不成立,其实这两个公式是双重错误(参数用法错误,数组公式输入错误),所以它的结果是没有意义的,这样的讨论意义也不大。 以上为个人看法,如果有什么说的不对的地方,鱼版主请见谅。
[此贴子已经被作者于2006-9-28 9:59:59编辑过] |