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

如何在Google Sheets中高效计算各贷款的累计待付款(含币种区分)

高效实现贷款待付款计算的数组公式方案

问题背景

在loans工作表中,需为每笔贷款计算待付款金额,要求:

  • 区分贷款ID(C列)和币种(E列)
  • 仅计算到期日(B列)≤今日的贷款
  • 待付款=该贷款ID+币种的累计放款额(当前行及之前同组的金额总和)- 对应ID+币种的累计付款额(来自payments工作表)
  • 结果为正显示数值,否则显示0
  • 必须使用单个数组公式,禁止手动拖拽

原方案的性能问题

  • 第一个公式使用MMULT进行矩阵运算,当数据行数较多时,计算复杂度为O(n²),导致表格大幅卡顿
  • 第二个公式多次调用SORT+MATCH进行分组累计,重复的排序和匹配操作会累积性能开销,仍存在卡顿问题

高效解决方案

在loans工作表的H1单元格输入以下数组公式:

={"pending amount";
ARRAYFORMULA(
  IF(
    LEN(C2:C)*(B2:B<=TODAY()),
    LET(
      total_loans, SUMIFS(D2:D, C2:C, C2:C, E2:E, E2:E, ROW(D2:D), "<="&ROW(D2:D)),
      total_payments, SUMIFS(Payments!C2:C, Payments!B2:B, C2:C, Payments!D2:D, E2:E),
      pending, total_loans - total_payments,
      IF(pending>0, pending, 0)
    ),
    ""
  )
)}

方案优势

  1. 低复杂度计算:用SUMIFS替代高开销的矩阵运算和排序匹配,SUMIFS是Google Sheets优化的聚合函数,计算效率远高于原方案
  2. 避免重复计算:通过LET函数预计算累计放款额和累计付款额,复用计算结果,减少重复运算
  3. 精准过滤计算范围:仅对有贷款ID且到期日已到的行执行计算,减少不必要的性能消耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:23