基于相邻单元格日期文本位置的SUMIF特定数值求和需求
解决方案
针对你遇到的特殊求和场景,核心问题是需要提取J列单元格的公式文本而非计算结果,同时匹配K列多行日期的位置来对应取值,以下是可行的公式方案(适用于Google Sheets):
最终公式
=SUM(IFNA(BYROW('Mar 2017'!$K:$J, LAMBDA(row, LET( dates, SPLIT(INDEX(row,1), CHAR(10)), nums, SPLIT(SUBSTITUTE(FORMULATEXT(INDEX(row,2)), "=", ""), "+"), pos, MATCH(TEXT($A3, "mm/dd/yyyy"), TEXT(dates, "mm/dd/yyyy"), 0), VALUE(INDEX(nums, pos)) ))), 0)
公式拆解
- FORMULATEXT(INDEX(row,2)):获取J列单元格的原始公式文本(比如
=416.19+1987.92+1064.14) - SUBSTITUTE(..., "=", ""):去掉公式开头的等号,得到纯数值相加字符串
- SPLIT(..., "+"):将字符串拆分为单独的数值数组
- SPLIT(INDEX(row,1), CHAR(10)):把K列单元格的多行日期拆分为日期数组
- MATCH(...):定位目标日期在日期数组中的位置
- BYROW(...):遍历K-J列的每一行,对符合条件的行提取对应位置的数值
- SUM(IFNA(...,0)):汇总所有提取到的数值,忽略错误值(无匹配的行)
注意事项
- 确保K列的日期格式与
TEXT($A3, "mm/dd/yyyy")的格式完全一致,避免匹配失败 - J列的公式必须是纯数值相加的形式(无其他函数或引用),否则拆分逻辑需要调整
- 若使用Excel而非Google Sheets,需替换
FORMULATEXT为GET.CELL(6, 单元格)(需定义名称或使用宏表函数),同时BYROW和LAMBDA需要Excel 365及以上版本支持
内容的提问来源于stack exchange,提问作者David J. Myers
相关产品推荐
相关产品推荐

