5

この MS Excel 関数の背後にある計算を誰か教えてください。PHP でコードを書いていますが、Excel を使用してこれらを計算することはできませんが、それでも同じ結果が必要です。

CUMIPMT(rate,nper,pv,start_period,end_period,type) Returns the cumulative
interest paid on a loan between start_period and end_period.

私のエクセル関数 -

=IF($C$33<0,CUMIPMT($C$36/12,$C$35,-$C$33,$C$34,$C$34+11,0),-CUMIPMT($C$36/12,$C$35,$C$33,$C$34,$C$34+11,0))

もう 1 つの質問 - 使用(=E11-E12)しましたが、減算ではなく、両方の値を加算します。理由がわかりません。

前もって感謝します

4

3 に答える 3

2

私は使っていませんが、PHPExcel Libraryをチェックしてみてください。Excel と PHP は十分に異なっているため、私がリンクしたようなライブラリを使用するか、すべての計算を手動で行う関数を作成する必要があります。あなたの場合、Excel ファイルを処理することが、目標を達成するための最も簡単な方法のようです。

于 2013-04-06T20:24:04.293 に答える
1

このスレッドが古いことは知っていますが、今日、Excel スプレッドシートを Objective-C に変換する作業を行っていたので、これに対する回答も必要でした。これが私が最終的に書いた解決策です:

double cumipmt(double rate, int nper, double pv, int start_period, int end_period, BOOL type)
{
    double cumipmt = 0;
    double thePmt = pmt(rate, nper, pv, 0, type);
    double endValue = pv;

    if (type==0)
{
    for (int i=1; i<=end_period; i++)
    {
        double beginning = endValue;
        double interest = beginning * rate;
        endValue = beginning + interest + thePmt;

        if (i>=start_period)
        {
            cumipmt += interest;
        }
    }
}
else
{
    for (int i=1; i<end_period; i++)
    {
        double beginning = endValue + thePmt;
        double interest = beginning * rate;
        endValue = beginning + interest + thePmt;

        if (i>=start_period)
        {
            cumipmt += interest;
        }
    }
}

    return cumipmt;
}

double pvFactor(double rate, int nper)
{
    return (1 / fvFactor(rate, nper));
}

double fvFactor(double rate, int nper)
{
    return pow(1+rate,nper);
}

double annuityPvFactor(double rate, int nper, bool type)
{
    if (rate == 0) {
        return nper;
    }
    else {
        return (1 + rate * type) * (1 - pvFactor(rate, nper)) / rate;
    }

}

double pmt(double rate, int nper, double pv, double fv, bool type)
{
    return (-1 * (pv + fv + pvFactor(rate, nper))) / (annuityPvFactor(rate, nper, type));
}

これが PHP にないことはわかっていますが、変換するのは簡単なはずです。

于 2014-12-19T19:29:10.167 に答える
0

IF( condition, [value_if_true], [value_if_false] )

conditionは、テストする値です。

value_if_trueはオプションです。condition が TRUE と評価された場合に返される値です。

value_if_falseはオプションです。condition が FALSE と評価された場合に返される値です。

つまり、基本的には、これを言っています

if ($C$33 < 0) {
    // if the condition is TRUE
    return CUMIPMT($C$36 / 12, $C$35, -$C$33, $C$34, $C$34 + 11, 0);
} else {
    // if the condition is FALSE
    return -CUMIPMT($C$36 / 12, $C$35, $C$33, $C$34, $C$34 + 11, 0);
}

(=E11-E12)あなたの問題に関して。これに変更してみてください=E11-E12。E12 が負の数の場合、マイナス記号が配布されることを覚えておく必要があります。

編集: あなたのコメントに関して、このリンクが役立つことを願っています

http://www.excelforum.com/excel-programming-vba-macros/515109-need-longhand-formulas-for-cumipmt-and-cumprinc-functions-in-excel.html

于 2013-04-06T20:27:59.803 に答える