减少 Excel 中的 Lambda 迭代

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

我想使用Reduce / Lambda 迭代公式,这样您只需更改第一个工作表名称,它就会相应更新。

目前我正在使用这样的公式:

=DROP(UNIQUE(VSTACK(
FILTER('2023-12'!A:A,'2023-12'!A:A<>""),
FILTER('2023-11'!A:A,'2023-11'!A:A<>""),
FILTER('2023-10'!A:A,'2023-10'!A:A<>""),
FILTER('2023-09'!A:A,'2023-09'!A:A<>""),
FILTER('2023-08'!A:A,'2023-08'!A:A<>""),
FILTER('2023-07'!A:A,'2023-07'!A:A<>""),
FILTER('2023-06'!A:A,'2023-06'!A:A<>""),
FILTER('2023-05'!A:A,'2023-05'!A:A<>""),
FILTER('2023-04'!A:A,'2023-04'!A:A<>""),
FILTER('2023-03'!A:A,'2023-03'!A:A<>""),
FILTER('2023-02'!A:A,'2023-02'!A:A<>""),
FILTER('2023-01'!A:A,'2023-01'!A:A<>""))),5)

类似于如何对多个页面进行求和,例如 =SUM('2023-12:2023-01'!A1),我想使用 REDUCE LAMBDA,以便我可以将第一个工作表从 2023-12 更新到 2024- 01等,它会相应地更新结果。

这个想法是工作表包含 A 列中的所有项目,其中几乎每月都会添加新项目,并且结果列应确保它具有唯一列表中所有工作表的所有结果。

我希望这有足够的意义。

上面的公式是我尝试过的,虽然它有效,但每次添加新周期时我都必须将新行添加到公式中。这最终会变得很长并使公式变得很大。

excel excel-formula
1个回答
0
投票

我不知道如何在不使用易失性函数 Indirect 的情况下做到这一点,但如果允许的话,使用Reduce 看起来会像这样:

=LET(startDate,DATE(2023,12,1),
seq,SEQUENCE(3,1,0,-1),
DROP(UNIQUE(REDUCE("",seq,LAMBDA(a,c,VSTACK(a,TOCOL(INDIRECT("'"&TEXT(EDATE(startDate,c),"YYYY-MM")&"'!"&"A:A"),1))))),1))

可以根据需要更改开始日期和页数。

© www.soinside.com 2019 - 2024. All rights reserved.