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

Power Query递归创建列问题:固定EMI下月供本息计算报错

EMI贷款计算问题及尝试方案

EMI计算公式

Number.Round((rate/12*pv)/(1-Number.Power(1+rate/12,-nper)),0)

参数说明:

  • PV:初始贷款金额
  • Rate:初始利率
  • nper=180:贷款期限(单位:月)
    本次计算得出 EMI=107485

固定EMI下的每月利息与本金计算规则

利息计算公式:上期余额 × 利率/12 × 计息天数/上月天数;若利率变动,则按新利率适用天数分段计算。
本金与剩余余额公式:

Principal = EMI - Interest paid
New Balance = Previous Balance - Principal

当前问题

计算利息时无法正确引用上期余额,导致通过上述函数创建的利息、本金及余额列全部报错。

已尝试的递归函数方案

1. 计算初始EMI的PMT函数

PMT
    (pv,rate,nper)=>
    let
    payment = Number.Round((rate/12*pv)/(1-Number.Power(1+rate/12,-nper)),0)
    in
    payment

2. 计算利息的Get_InterestValue函数(Index Value为还款期数/行号)

Get_InterestValue
    (indexValue,table,rate,no_of_days,no_of_days_in_Month)=>
    let
    prev_idx=indexValue-1,
    previousbal = get_previous_balance(indexValue,table),
    interest=previousbal*rate/12/no_of_days_in_Month*no_of_days
    in
    interest

3. 计算已还本金的GetPrincipalPaid函数

GetPrincipalPaid
    (indexvalue,table,EMI_amount,Interest_amount)=>
    let
    principal_amount= EMI_amount-Interest_amount
    in
    principal_amount

4. 计算上期余额的get_previous_balance函数(fParameter函数用于读取初始参数表)

get_previous_balance
    (index_value,table)=>
    let
    prev_idx=index_value-1,
    prev_bal=if prev_idx=0 then fParameter("ParameterTable","Initial_Loan_Amount") else Table.SelectRows(table, each ([Index] = prev_idx)){0}[Bal]
    in 
    prev_bal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:55:42