使用Excel中的工作表的INDIRECTfunction
我希望创build一个二维matrix与Excel中的间接函数使用这样的东西:
=INDIRECT(A12:A14 & "!C3:C11")
这个想法是,如果你有A12:A14持有工作表名称,C3:C11在每个工作表中都有一些数据,你可以很容易地把它收集到一个matrix中,用这个简单的函数在另一个工作表中处理。
在这之后,您可以使用=MMULT()
或其他函数,如B12:B14,例如做一个matrix乘法:
=MMULT(B12:B14*INDIRECT(A12:A14 & "!C3:C11")
有没有一个简单的方法来做到这一点,我失踪了? 比如用圆括号重新设置或者在某处放置一个SUM?
数组公式**
=MMULT(TRANSPOSE(B12:B14),N(OFFSET(INDIRECT("'"&A12:A14&"'!C3"),TRANSPOSE(ROW($C$3:$C$11)-MIN(ROW($C$3:$C$11))),)))
问候
**数组公式不是以与“标准”公式相同的方式input的。 按住CTRL键和SHIFT键,而不是按下ENTER键,然后按ENTER键。 如果你做得对,你会注意到Excel在公式周围放置了大括号(尽pipe不要试图自己手动插入这些)。
如果你使用build筑
=INDIRECT(A12:A14 & "!C3:C11")
这不会创buildmatrix,但会创build一个“范围数组”。 AFAIK你只能使用那些有用的特定function,例如像“ SUMIF
”这样的“IFS”types的函数,所以你可以用这个公式得到3个范围内的正值总数
=SUMPRODUCT(SUMIF(INDIRECT(A12:A14 & "!C3:C11"),">0"))
另一个可以处理这种排列的函数是SUBTOTAL
,所以这个公式将把这两个范围内的所有值相加
=SUMPRODUCT(SUBTOTAL(9,INDIRECT(A12:A14 & "!C3:C11")))