我正在使用样本表可在此处获取。
在“贷款”表中,有一个贷款列表及其各自的到期日,每笔贷款都与特定的贷款日期(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)
)
,)
)
}
虽然有效,但此公式也会减慢纸张速度。
任何有关如何有效实现这一目标的指导或帮助将不胜感激。谢谢!