使用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")))