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

如何将Google Sheets的BET公式转换为PHP代码计算B18值?

解决Google Sheets BET函数转PHP的计算问题

核心背景

你需要将Google Sheets公式=-BET(H18/100,E18,A18)转换为PHP代码,已知示例输入:

  • A18(本金)=5000
  • C18(年利率)=9.7%
  • E18(总期数)=72
  • H18(月利率)=0.7740%(已通过PHP实现)
    目标计算结果B18=91。

关键公式说明

Google Sheets中的BET是荷兰语版本的PMT(每期还款额)函数,参数顺序为:BET(每期利率, 总期数, 现值/本金)。你的公式=-BET(...)等价于标准财务计算中的等额本息每期还款额(取负数是因为Google Sheets中BET返回的是现金流出方向的值,需转换为正数表示还款额)。

PHP实现代码

PHP没有内置PMT函数,直接用数学公式实现即可,以下是完整可运行的示例:

// 从API获取的变量
$A18 = 5000;
$C18 = 9.7;
$E18 = 72;

// 计算H18:月利率(保留3位小数,匹配原Excel公式AFRONDEN的逻辑)
$annualRate = $C18 / 100;
$monthlyRateRaw = pow(1 + $annualRate, 1/12) - 1;
$H18 = round($monthlyRateRaw * 100, 3); // 结果为0.774

// 实现BET/PMT计算逻辑
function getMonthlyPayment($monthlyRateDecimal, $totalPeriods, $principal) {
    // 处理利率为0的特殊情况
    if ($monthlyRateDecimal == 0) {
        return -round($principal / $totalPeriods);
    }
    // 等额本息还款公式
    $payment = ($monthlyRateDecimal * $principal) / (1 - pow(1 + $monthlyRateDecimal, -$totalPeriods));
    // 取负数并四舍五入,匹配Google Sheets的结果
    return -round($payment);
}

// 计算B18:注意月利率要转成小数(H18/100)
$B18 = getMonthlyPayment($H18 / 100, $E18, $A18);
echo $B18; // 输出:91

常见问题排查

  1. 参数顺序错误:之前尝试用PMT失败可能是参数顺序搞反(比如把本金放在期数前面),需严格遵循利率→期数→本金的顺序。
  2. 利率格式错误:必须将百分比形式的H18转换为小数(除以100),否则计算结果会完全偏离。
  3. 精度问题:使用round()函数匹配Google Sheets的AFRONDEN(四舍五入)逻辑,若需要更精确的结果可调整保留小数位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:37:38