如何用Office365 Excel数组公式计算各行各月YTD累计?遇#calc!错误求解
用数组公式计算每行的年初至今(YTD)累计值
需要计算每个名称对应各月份的YTD累计值,尝试使用以下公式时出现#CALC!错误:
=LET(data,B5:D7,BYROW(data,LAMBDA(r,SCAN(0,r,LAMBDA(a,v,a+v)))))
原始数据表格:
| 1月 | 2月 | 3月 | |
|---|---|---|---|
| A | 1 | 2 | 3 |
| B | 4 | 5 | 6 |
| C | 7 | 8 | 9 |
期望的YTD累计结果:
| 1月YTD | 2月YTD | 3月YTD | |
|---|---|---|---|
| A | 1 | 3 | 6 |
| B | 4 | 9 | 15 |
| C | 7 | 15 | 24 |
问题分析与解决方法
- 你的原公式逻辑完全正确:
BYROW遍历每行数据,SCAN对每行执行逐列累计求和。出现#CALC!错误的常见原因是Excel版本不支持动态数组函数(如Excel 2019及更早版本),或者输入公式时错误选中了多个单元格而非单个单元格触发溢出。 - 如果你使用的是Excel 365/2021(支持动态数组),只需将公式输入到单个空白单元格(比如F5),公式会自动溢出填充整个结果区域,无需手动选中区域。
- 若你的Excel版本不支持动态数组,可以使用传统数组公式(输入后按
Ctrl+Shift+Enter确认):=MMULT((ROW(B5:D7)=TRANSPOSE(ROW(B5:D7)))*(COLUMN(B5:D7)<=TRANSPOSE(COLUMN(B5:D7))),B5:D7) - 也可以简化原公式,去掉
LET函数,直接写:=BYROW(B5:D7,LAMBDA(r,SCAN(0,r,LAMBDA(a,v,a+v))))
内容的提问来源于stack exchange,提问作者user2847853
相关产品推荐
相关产品推荐

