如何使用 Google 表格计算每笔贷款的累积待付款?

问题描述 投票:0回答:1

我正在使用样本表可在此处获取

在“贷款”表中,有一个贷款列表及其各自的到期日,每笔贷款都与特定的贷款日期(A 列)和货币(E 列)相关联。

此外,还有一个“付款”表,其中包含付款信息,包括付款日期、金额和货币。

我需要实现的是考虑到货币,计算“贷款”表中每笔贷款的待支付金额。

为了说明这一点,我在“贷款”表中包含了 H 列,并给出了预期结果。

至关重要的是,此计算是使用单个数组公式完成的,以避免手动拖动。此外,在计算每笔贷款的待处理金额时应考虑货币。

我的第一个方法是这个公式

={"pending amount";
ARRAYFORMULA(
IF(LEN(C2:C)*(B2:B<=TODAY()),

IF(MMULT( (ROW(C2:C)>=TRANSPOSE(ROW(C2:C))) * (C2:C=TRANSPOSE(C2:C)), D2:D * (C2:C<>"") )-
IF(B2:B<=TODAY(),SUMIF(Payments!B2:B,C2:C,Payments!C2:C),)>0,

MMULT( (ROW(C2:C)>=TRANSPOSE(ROW(C2:C))) * (C2:C=TRANSPOSE(C2:C)), D2:D * (C2:C<>"") )-
IF(B2:B<=TODAY(),SUMIF(Payments!B2:B,C2:C,Payments!C2:C),)

,0)

,)
)
}

问题在于该公式利用了 MMULT 并显着减慢了工作表的速度。

我的第二种方法是这样的:

={"pending amount";
ARRAYFORMULA(
IF(LEN(C2:C)*(B2:B<=TODAY()),

LET(
loan,  
SUMIF( MATCH(ROW(C2:C), SORT(ROW(C2:C), C2:C & E2:E, 1),), "<=" & MATCH(ROW(C2:C), SORT(ROW(C2:C), C2:C & E2:E, 1),), D2:D) - 
SUMIF( MATCH(C2:C & E2:E, SORT(C2:C & E2:E),), "<" & MATCH(C2:C & E2:E, SORT(C2:C & E2:E),), D2:D),

payment,    IF(B2:B<=TODAY(),SUMIF(Payments!B2:B&Payments!D2:D,C2:C&E2:E,Payments!C2:C),),

IF(loan-payment>0,
loan-payment,0)


)
,)
)
}

虽然有效,但此公式也会减慢纸张速度。

任何有关如何有效实现这一目标的指导或帮助将不胜感激。谢谢!

google-sheets
1个回答
0
投票

这是您可以测试的一种方法:

=vstack("Pending_Payment_",let(Δ,lambda(x,index(x,2):index(x,index(match(,0/(B:B<>""))))),
     map(Δ(B:B),Δ(C:C),Δ(D:D),Δ(E:E),lambda(Σ,Λ,Γ,Ξ,if(or(Σ="",Σ>today()),,
     max(0,sumifs(D2:Γ,E2:Ξ,Ξ,C2:Λ,Λ)-sumifs(Payments!C:C,Payments!D:D,Ξ,Payments!B:B,Λ,Payments!A:A,"<="&Σ)))))))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.