我怎样才能告诉Excel执行表1到12中的公式;例如: 这就是我现在使用的公式:
=SUMIF('[02.09.12]02.09'!C:C, A2, '[02.09.12]02.09'!D:D) +
SUMIF('[02.09.11]02.09'!C:C, A2, '[02.09.11]02.09'!D:D) +
SUMIF('[02.09.10]02.09'!C:C, A2, '[02.09.10]02.09'!D:D) +
SUMIF('[02.09.09]02.09'!C:C, A2, '[02.09.09]02.09'!D:D) +
SUMIF('[02.09.08]02.09'!C:C, A2, '[02.09.08]02.09'!D:D) +
SUMIF('[02.09.07]02.09'!C:C, A2, '[02.09.07]02.09'!D:D) +
SUMIF('[02.09.06]02.09'!C:C, A2, '[02.09.06]02.09'!D:D) +
SUMIF('[02.09.05]02.09'!C:C, A2, '[02.09.05]02.09'!D:D) +
SUMIF('[02.09.04]02.09'!C:C, A2, '[02.09.04]02.09'!D:D) +
SUMIF('[02.09.03]02.09'!C:C, A2, '[02.09.03]02.09'!D:D) +
SUMIF('[02.09.02]02.09'!C:C, A2, '[02.09.02]02.09'!D:D) +
SUMIF('[02.09.01]02.09'!C:C, A2, '[02.09.01]02.09'!D:D)
有什么办法可以让我在一个单元格中输入 01 并在另一个单元格中输入 12 并且公式会自动运行?
解释完整。
REDUCE
、LAMBDA
和 INDIRECT
函数。
最终,您要对每张纸重复
SUMIF(<SHEET>!C:C,A2,<SHEET>!D:D)
,并将结果相加。我们可以将这部分重写为一个 LAMBDA
函数,它接受起始值和工作表名称,如下所示:
=LAMBDA(val, sht, val+SUMIF(INDIRECT("'" & sht & "'!C:C"), A2, INDIRECT("'" & sht & "'!D:D")))
然后您只需使用
REDUCE
: 为其提供起始值和工作表名称数组
=REDUCE(0, {"[02.09.01]02.09", "[02.09.02]02.09", "[02.09.03]02.09"}, LAMBDA(val, sht, val+SUMIF(INDIRECT("'" & sht & "'!C:C"), A2, INDIRECT("'" & sht & "'!D:D"))))
但是,您的所有工作表名称都遵循逻辑模式,因此……假设您暂时设置了 2 个命名范围,分别称为
StartDay
和 EndDay
(您不需要 需要,您 可以 只需使用正常的单元格引用,如 A1
和 B1
)
然后你可以结合
INDEX
和 ROW
动态生成工作表名称数组:
="[02.09." & TEXT(ROW(INDEX(A:A, StartDay):INDEX(A:A, EndDay)), "00") & "]02.09"
然后将其插入您的
REDUCE
:
=REDUCE(0, "[02.09." & TEXT(ROW(INDEX(A:A, StartDay):INDEX(A:A, EndDay)), "00") & "]02.09", LAMBDA(val, sht, val+SUMIF(INDIRECT("'" & sht & "'!C:C"), A2, INDIRECT("'" & sht & "'!D:D"))))