以下是引用gdliyy在2005-1-30 22:58:00的发言:
为什么会有问题呢?原因是你用了N()函数,但却在Offset()中用了多单元格区域引用,所以它只能识别L11:L15区域的左上角单元格,所以导致错误。可以这样修改一下,但公式就变长了:)
=MMULT(TRANSPOSE(ROW(A11:A15)^0),N(OFFSET(L10:M10,ROW(A11:A15)-10,(B10:K10="b")))*B11:K15)
你给的这个不如偶前面修改过那个运算快,因为你多次只使用了每个区域的第一行,虽然公式看上去很不错,但效率。。。嘿嘿!
b23=MMULT(TRANSPOSE(ROW(A11:A15)^0),(L11:L15*(B10:K10="A")+M11:M15*(B10:K10="B"))*B11:K15)
另外经过测试:
OFFSET($L11:$L15,,(G$10="b")))在这里等效于OFFSET($L11:$L15,,(G$10="b"),,)) ,比如偶的单个单元格数组公式就是这么用的=SUM(B11:B15*OFFSET($L11:$L15,,(B$10="b"))),没有出现问题。偶想可能是以数组公式返回了,而不是在一个单元格中引用,所以OFFSET($L11:$L15,,(G$10="b")))的结果以二维的形式出现了。
所以在多单元格数组公式中,OFFSET($L11:$L15,,(G$10:K$10="b"))) 实际不是只引用了左上角的单元格,而是整列,只是因为出现了三维引用,偶用n()转换成二维后,它只取了第一行。
如果如gdliyy兄所说的理由(只引用了左上角)成立,那么在多单元格数组公式中改成OFFSET($L11:$L15,,(G$10:K$10="b"),,))引用整列就应该可以了,但事实上不是。
由此可见offset的这一用法和我们之前所认知的有所不同。offset的引用范围在数组公式中和单个单元引用中的表现是不同的。
[此贴子已经被作者于2005-1-31 9:03:14编辑过] |