在excel中使用工作表的INDIRECT函数

时间:2015-01-26 22:44:01

标签: excel

我希望用excel中的间接函数创建一个二维矩阵,使用类似的东西:

=INDIRECT(A12:A14 & "!C3:C11")

这个想法是,如果您有A12:A14保存工作表名称,并且每个工作表中包含C3:C11,并且使用这个简单的函数,您可以轻松地将其收集到矩阵中以便在另一个工作表中进行处理。

在此之后,您可以使用=MMULT()或其他函数与B12:B14等数组进行矩阵乘法运算:

=MMULT(B12:B14*INDIRECT(A12:A14 & "!C3:C11")

有一种简单的方法可以解决这个问题吗?例如,用括号进行后续处理或在某处放置SUM?

2 个答案:

答案 0 :(得分:3)

数组公式**

=MMULT(TRANSPOSE(B12:B14),N(OFFSET(INDIRECT("'"&A12:A14&"'!C3"),TRANSPOSE(ROW($C$3:$C$11)-MIN(ROW($C$3:$C$11))),)))

此致

**数组公式的输入方式与“标准”公式的输入方式不同。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果你已经正确地完成了它,你会注意到Excel在公式周围放置了大括号{}(虽然不要尝试自己手动插入这些)。

答案 1 :(得分:1)

如果您使用构造

=INDIRECT(A12:A14 & "!C3:C11")

不会创建矩阵但会创建“范围数组”。 AFAIK只能对某些功能有用,例如: “IFS”类型的函数类似于SUMIF,因此您可以使用此公式获得这3个范围中的正值总数

=SUMPRODUCT(SUMIF(INDIRECT(A12:A14 & "!C3:C11"),">0"))

可以处理该排列的另一个函数是SUBTOTAL,因此该公式将汇总这两个范围中的所有值

=SUMPRODUCT(SUBTOTAL(9,INDIRECT(A12:A14 & "!C3:C11")))