不同工作表的Excel公式

问题描述 投票:0回答:1

我怎样才能告诉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 并且公式会自动运行?

解释完整。

excel formula series sumifs
1个回答
0
投票

组合

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"))))
© www.soinside.com 2019 - 2024. All rights reserved.