求助:Excel表格中按当前行累计值阈值设置单元格数值
解决Excel结构化表格中按累计值设置单元格值的问题
你的核心问题是原公式=IF(SUM([TOTAL]) >= 5000, 80, 70)计算的是整个TOTAL列的总和,而非从列首到当前行的累计值,所以所有行结果一致。直接用ROW()无效是因为结构化表格的引用规则和普通单元格区域不同,得用结构化引用语法来限定累计范围。
可行公式(推荐非易失版本)
在目标列的第一个数据单元格(跳过表头)输入以下公式,回车后表格会自动填充整列:
=IF(SUM(INDEX([TOTAL],1):[@TOTAL])>=5000,80,70)
公式说明:
INDEX([TOTAL],1):定位到结构化表格中TOTAL列的第一行数据[@TOTAL]:结构化引用的当前行TOTAL单元格,两者结合形成「从TOTAL列首到当前行」的连续区域- SUM计算该区域的累计值,再通过IF判断返回70或80
备选方法(易失函数版本)
如果需要用ROW()实现,可借助OFFSET函数(注意:OFFSET是易失函数,表格刷新时会重新计算,大数据量可能影响性能):
=IF(SUM(OFFSET([@TOTAL],-ROW([@TOTAL])+ROW(Table1[#Headers])+1,0,ROW([@TOTAL])-ROW(Table1[#Headers]),1))>=5000,80,70)
公式说明:
ROW(Table1[#Headers]):获取表格表头的行号,计算当前行与首行的偏移量- OFFSET基于当前行TOTAL单元格,向上偏移到列首,扩展到当前行的高度,从而得到累计区域
内容的提问来源于stack exchange,提问作者ConnerWithAnE
相关产品推荐
相关产品推荐

