以下是引用gouweicao78在2006-4-4 16:04:13的发言:以下是引用[I]yigepure[/I]在2006-4-1 21:28:31的发言:[BR]AND,OR返回的不是数组了. 这是由于AND(logical1,logical2, ...)或者OR(logical1,logical2, ...)这2个函数已经将括号内的数组运算返回的值当作一个个logical(逻辑值)来对待,And要求所有这些逻辑值全部逻辑值为真而Or要求只要有一个逻辑值为真。 所以有些公式作为单个公式应用觉得不错的公式不能用在数组公式里,比如: =if(or(left(A1,3)={"abc","bcd","cde"}),B1)——这么一个公式表示只要A1开头3位是abc、bcd、cde的任何一种,就返回B1单元格的值。 但我们不能用=sum(if(or(left(A1:A10,3)={"abc","bcd","cde"}),B1:B10))的数组公式来实现“对A列前3位为abc、bcd、cde的项目对应的B列求和”这个念头,因为此时只要A1:A10有任何一个满足这3种开头的情况,就返回B1:B10求和值。 如果写成+号的话,这个数组公式的正确表达应该是:=SUM(IF((LEFT(A1:A10,3)="abc")+(LEFT(A1:A10,3)="bcd")+(LEFT(A1:A10,3)="cde"),B1:B10)) 当然,这只是举个例子说明or返回的是单值罢了,真正用来计算这个问题还是用底下这个比较实在: =SUM(SUMIF(A1:A10,{"abc*","bcd*","cde*"},B1))——普通公式 能否解释一下这个公式=SUM(SUMIF(A1:A10,{"abc*","bcd*","cde*"},B1)) SUMIF(A1:A10,{"abc*","bcd*","cde*"},B1)得出的应该是一单值,再套用SUM是何意思?看上去,SUM(SUMIF())应等同于SUMIF()得出的单值结果。在用“公式求值”检查时,发现不管A1:A10填入几行值,每次即使不同,但最终都显示为SUM({0,0,0}), 且可得到不同的正确结果。奇怪。 |