Excel技术问询:基于前3个布尔True值计算对应行的求和公式
Excel:计算指定条件的前3个符合项之和
针对你需要在第三行每个单元格,计算第二行对应位置之前(含当前列可按需调整)第一行布尔值为TRUE的最近3个条目之和的需求,推荐两种比SUMIF+部分和更简洁的方案:
方案一:Excel 365/2021 动态数组方案(最简便)
假设数据从A1开始:
- 第一行:
A1:Z1为布尔值(TRUE/FALSE) - 第二行:
A2:Z2为待求和的数值 - 第三行从
B3开始输入公式(A3无前置单元格,直接写0即可):
=SUM(TAKE(FILTER($A2:B2, $A1:B1=TRUE), -3))
拖动公式向右填充即可。
公式解释:
FILTER($A2:B2, $A1:B1=TRUE):筛选出当前单元格及左侧区域中,第一行对应为TRUE的第二行数值TAKE(..., -3):提取筛选结果的最后3个(即最近的3个符合条件的条目)SUM():对这3个值求和(如果符合条件的条目不足3个,自动对现有值求和;无符合项则返回0)
如果需要排除当前列(仅计算左侧单元格),把公式里的$A2:B2和$A1:B1改成$A2:A2和$A1:A1,拖动时会</think_never_used_51bce0c785ca2f68081bfa7d91973934>自动扩展区域。
方案二:旧版Excel(无动态数组)兼容方案
如果使用Excel 2019及更早版本,用数组公式实现:
在B3输入以下公式,按Ctrl+Shift+Enter完成输入,再向右填充:
=SUM(INDEX($A2:B2, SMALL(IF($A1:B1=TRUE, COLUMN($A1:B1)-COLUMN($A1)+1), MAX(1, COUNTIF($A1:B1, TRUE)-2)):SMALL(IF($A1:B1=TRUE, COLUMN($A1:B1)-COLUMN($A1)+1), COUNTIF($A1:B1, TRUE))))
公式逻辑:
IF($A1:B1=TRUE, COLUMN(...):标记出符合条件的单元格位置SMALL(..., MAX(1, COUNTIF(...):定位到倒数第3个符合条件的位置(如果不足3个则从第一个开始)INDEX(...):提取对应区域的数值并求和
内容的提问来源于stack exchange,提问作者jahnLudvik
相关产品推荐
相关产品推荐

