You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DSUM函数求和时累加历史行数据的问题排查

DSUM函数未按订单ID筛选反而累加的原因及解决方法

问题根源

你使用的条件区域$A$1:A2(下拉后变为$A$1:A3)包含了多行条件值,DSUM对多行条件的处理逻辑是逻辑或(OR)——只要满足条件区域中任意一行的记录,都会被纳入求和范围:

  • 计算OId=1的行时,条件区域仅包含OId=1的条件,结果正确为30;
  • 计算OId=2的行时,下拉后的条件区域包含OId=1和OId=2两个条件,DSUM会把Line Items表中所有OId为1或2的记录求和,即30+22=52,因此出现累加历史数据的情况。

解决方法

要实现按当前行OId单独筛选求和,需让条件区域始终只包含当前行的OId条件,可采用两种方式:

  1. 辅助列固定单行条件
    在Orders表新增辅助列(如C列),C1输入标题OId,C2输入=A2,然后在B2输入公式:

    =DSUM('Line items'!A:B, "Total", $C$1:C2)
    

    下拉时,辅助列会自动匹配当前行OId,条件区域始终仅包含标题和当前行的OId,确保每次只筛选对应订单的记录。

  2. 数组条件直接指定
    用数组替代区域引用,明确指定当前行OId为筛选条件,公式改为:

    =DSUM('Line items'!A:B, "Total", {"OId"; A2})
    

    该数组仅包含标题和当前行OId,每次计算只会匹配对应订单的Line Items记录。

内容的提问来源于stack exchange,提问作者user1016976

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:20:10