Google Sheets ArrayFormula仅返回首值 如何实现双表按起止日期自动求和
问题原因与解决方案
错误根源
你编写的数组公式仅首行结果正确,核心原因是SUMIFS本身不支持原生的逐行数组匹配逻辑。即便外层套了ArrayFormula,当你给SUMIFS传入O2:O、P2:P这类数组作为条件时,函数只会读取数组的第一个值(即O2、P2)进行全局计算,最终所有行都会返回和首行一致的结果。
正确实现方案
使用MAP函数同时遍历起始日期列和结束日期列,逐行传入参数到SUMIFS中计算即可实现自动向下迭代整列的效果。将以下公式写入你要输出结果的列的第一行(如Q2),会自动向下溢出所有行的结果,无需手动拖拽:
=MAP(O2:O,P2:P,LAMBDA(start_date,end_date, IF(OR(ISBLANK(start_date),ISBLANK(end_date)),"", SUMIFS('Auto Expenses'!$J$7:$J,'Auto Expenses'!$F$7:$F,">="&start_date,'Auto Expenses'!$F$7:$F,"<="&end_date) + SUMIFS('Business Expenses'!$J$7:$J,'Business Expenses'!$F$7:$F,">="&start_date,'Business Expenses'!$F$7:$F,"<="&end_date) )))
方案说明
MAP(O2:O,P2:P,LAMBDA(start_date,end_date,...)):逐行配对O列的起始日期和P列的结束日期,作为参数传入后续计算逻辑- 内层
IF判断:如果当前行的起始或结束日期为空,返回空值,避免出现无效计算结果 - 两个
SUMIFS分别统计两个工作表中落在对应日期范围内的支出总和,相加后即为当前行的总支出
内容的提问来源于stack exchange,提问作者Evans Raymond
相关产品推荐
相关产品推荐

