基于Reduce/Lambda实现Excel多工作表动态迭代公式需求
用REDUCE/LAMBDA实现跨月度工作表的动态合并去重
最终公式
=UNIQUE(DROP(VSTACK(REDUCE("", TEXT(SEQUENCE(12,1,VALUE(B1)),"yyyy-mm"), LAMBDA(acc,curr, VSTACK(acc, FILTER(INDIRECT("'"&curr&"'!A:A"), INDIRECT("'"&curr&"'!A:A")<>"")))),1))
用法
- 在任意空白单元格(比如
B1)输入目标年份的起始月份,格式为yyyy-mm(例如2024-01) - 将上述公式粘贴到需要输出结果的单元格,它会自动遍历该年份下所有12个月度工作表(
2024-01至2024-12)的A列,提取非空值并去重
公式解析
TEXT(SEQUENCE(12,1,VALUE(B1)),"yyyy-mm"):根据B1的起始月份,生成12个连续的标准月度名称,匹配你的工作表命名规则REDUCE + LAMBDA:逐个遍历每个月度工作表:INDIRECT("'"&curr&"'!A:A"):引用当前遍历到的工作表的A列FILTER(..., <> ""):过滤掉A列的空值VSTACK(acc, ...):将当前工作表的非空值追加到累计结果中
DROP(...,1):移除REDUCE初始空值带来的首行空行UNIQUE:对所有合并后的值去重,得到唯一值列表
自定义调整
- 如果只需要合并部分月份(比如前6个月),把
SEQUENCE(12,...)改成SEQUENCE(6,...) - 如果工作表命名格式不同,修改
TEXT函数里的格式字符串即可(比如"yyyy年mm月")
内容的提问来源于stack exchange,提问作者Thiv
相关产品推荐
相关产品推荐

