PAYATHON 2026

Excel 2013 按日期延迟匹配发票总额与付款

社区小冯

结论

可以。在 Excel 2013 中直接使用 SUMIFS,不需要辅助列,也不用按 Ctrl+Shift+Enter 输入数组公式。

假设:

  • C 列是当前期间的开始日期;
  • D 列是期间结束日期;
  • F 列是发票总额;
  • $C$7 是付款延迟天数 k。

公式如下:

=SUMIFS($F$12:$F$25,$D$12:$D$25,">="&C12-$C$7,$D$12:$D$25,"<="&D12-$C$7)

公式原理

每笔发票的实际付款日期为:

发票期间结束日期 + k

要把付款金额计入当前行对应的期间,需要满足:

当前期间开始日期 <= 发票期间结束日期 + k <= 当前期间结束日期

把 k 移到不等式另一侧,可得:

当前期间开始日期 - k <= 发票期间结束日期 <= 当前期间结束日期 - k

所以,SUMIFS 只需在 D 列中筛选处于这个范围内的结束日期,再汇总对应的 F 列金额。

第一个条件是:

">="&C12-$C$7

它表示付款日期不能早于当前期间的开始日期。

第二个条件是:

"<="&D12-$C$7

它表示付款日期不能晚于当前期间的结束日期。

为什么优先使用 SUMIFS

SUMPRODUCT 也可以完成相同的计算:

=SUMPRODUCT(($D$12:$D$25+$C$7>=C12)*($D$12:$D$25+$C$7<=D12)*$F$12:$F$25)

不过,如果 D 列中的公式会返回空字符串 "",直接执行:

$D$12:$D$25+$C$7

可能出现 #VALUE! 错误。

SUMIFS 不会对整个日期区域逐项执行加法,处理公式产生的空白值时通常更稳定。它也是普通公式,输入后直接按 Enter 即可。

边界条件

公式使用了 >= 和 <=,因此付款日期正好等于期间开始日或结束日时,也会计入该期间。

如果两个期间首尾相接,并且前一期间的结束日期也是下一期间的开始日期,同一笔金额可能被重复计算。此时可以采用“包含开始日、不包含结束日”的区间:

=SUMIFS($F$12:$F$25,$D$12:$D$25,">="&C12-$C$7,$D$12:$D$25,"<"&D12-$C$7)

具体使用 < 还是 <=,取决于工作表对期间边界的定义。

注意事项

  • C、D 列必须存储为 Excel 能识别的真实日期,不能是外观看起来像日期的文本。
  • $C$7 应填写整数天数。如果要按工作日计算延迟,不能直接加减 k,需要结合 WORKDAY 等函数重新确定付款日期。
  • SUMIFS 会汇总日期范围内的所有发票。如果业务规则要求每个期间只能匹配一笔发票,还需要增加唯一匹配条件。
  • 固定范围 $12:$25 可以根据实际数据量扩展,但求和区域与所有条件区域的大小必须完全一致。

备注:内容仅供参考。