Menu

NPV関数とIRR関数の使い方: 数式と0年目の落とし穴

=NPV(E2,B3:B5)+B2は、将来のキャッシュフローをE2の割引率で割り引き、NPVで割り引いてはいけないB2の初期投資を足します。=IRR(B2:B5)はそのNPVが0になる率を返します。XNPVとXIRRは実際の日付を使います。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=NPV(E2,B3:B5)+B2は、1年目から3年目のキャッシュフローをE2の割引率で割り引き、B2の初期投資を足します。初期投資は今日発生するので割り引きません。=IRR(B2:B5)は、その正味現在価値がちょうど0になる割引率を返します。

プロジェクトのNPVとIRR
E3
ABCDE
1YearCash flowMeasureValue
20-$10,000Rate10%
31$3,000NPV$1,307.29
42$4,200IRR16.34%
53$6,800
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

10%ではプロジェクトの価値がコストを$1,307.29上回り、IRRは約16.34%です。E2の割引率を16%に変えるとNPVは約64に下がり、20%ではマイナスになります。これが2つの関係です。IRRはNPVが0をまたぐ率です。

NPV関数の構文: 最初のキャッシュフローは1期間後

=NPV(rate, value1, [value2], ...)

ExcelのNPVは、すべての値が期間の終わりにあり、今から1期間後に始まると仮定します。そのため範囲の最初の値は1回、2つ目は2回というように割り引かれます。今日(0年目)の投資を範囲に入れてはいけません。上の数式のように、NPVの後に足します。投資は出ていくお金なのでマイナスです。

それを範囲の中に入れるのはExcelのNPVでいちばんよくある間違いで、エラーは出ず、数が小さくなるだけです:

初期投資をNPVの中に入れた場合と外に置いた場合
E3
ABCDE
1YearCash flowVersionNPV at 10%
20-$10,000Rate10%
31$3,000Right$1,307.29
42$4,200Wrong$1,188.44
53$6,800
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

間違った版は$1,188.44になり、これは正しい答えを1.1で割った値です。投資も含めたすべてのキャッシュフローが1年後ろにずれています。最初のキャッシュフローが本当に1年目の終わりにある(機械の代金を1年後に払う)なら、範囲全体をNPVの中に入れます。

NPVの計算方法

NPVは、各キャッシュフローを(1 + 割引率)の年数乗で割り、その結果を足します。このシートは手で計算しているので、各年がいくら寄与しているかがわかります。

各年を割り引く
C3
ABCDE
1YearCash flowPresent valueRate
20-$10,000.00-$10,000.0010%
31$3,000.00$2,727.27
42$4,200.00$3,471.07
53$6,800.00$5,108.94
6Total$1,307.29
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

3年目の6,800は、10%では今日の$5,108.94の価値しかありません。C6の合計はNPVと同じ$1,307.29です。0年目は(1.1)^0、つまり1で割るので、そのままです。

IRR関数の構文と読み方

=IRR(values, [guess])

values(範囲)には、マイナスの投資を先頭に、すべてのキャッシュフローを時間の順に入れます。等間隔(毎年、または毎月)である必要があります。guess(推定値)はExcelの探索の出発点で省略でき、既定は10%です。IRRが#NUM!を返したときだけ指定します。

プロジェクトは、IRRが資金のコストやほかで得られる率(ハードルレート)より高ければ実行する価値があります。資本コスト10%に対してIRR 16.34%なら実行で、プラスのNPVとも一致します。

キャッシュフローが毎月なら、IRRは月利を返します。年率に変換するには12を掛けるのではなく=(1+IRR(B2:B13))^12-1を使います。

すべての値が同じ符号である(取り戻すべき投資がない)ときや、20回の試行で率が見つからないとき、IRRは#NUM!を返します。符号が2回以上変わる系列(投資、回収、再投資)には正しいIRRが2つあることがあり、Excelがどちらを返すかは推定値しだいです。その場合はNPVのほうを信頼する理由になります。

実際の日付にはXNPVとXIRR

キャッシュフローが規則的な日付に来ないときは、XNPVとXIRRを使います。各値の日付を受け取り、1年を365日として正確な日数で割り引きます。NPVと違って、XNPVはすべての値を最初の日付まで割り引き、最初の値は割り引かないので、投資を範囲の中に入れます。

不規則な日付
E2
ABCDE
1DateCash flowMeasureValue
22026-01-15-$10,000XNPV at 10%$1,609.73
32026-09-01$3,000XIRR19.08%
42027-06-30$4,200
52028-12-31$6,800
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

XNPVが年単位のNPVより高くなるのは、どのキャッシュフローも整数の年数より早く入るからです。最初の3,000は7か月半後に、最後の6,800は3年目の終わりの2週間前に入ります。最後の日付を1年後ろにずらすと、両方の結果が下がります。同じお金でも、入るのが遅いほど今日の価値は小さくなります。XIRRは、ばらばらの日に入金がある投資口座の利回りにも適した関数です。

やってみよう: NPVとIRR

バンを買うべきか
E3
ABCDE
1YearCash flowMeasureValue
20-$24,000Rate8%
31$7,000NPV
42$7,500
53$8,000
64$8,500
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: バンは今日B2の費用がかかり、1年目から4年目の終わりにB3:B6の金額を節約できます。E3に、E2の割引率での正味現在価値を計算してください。

ヒント: 0年目はNPVの外に置きます。

小さな賃貸物件の利回り
E2
ABCDE
1YearCash flowMeasureValue
20-$50,000IRR
31$9,000
42$9,500
53$10,000
64$10,500
75$25,000
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: E2に、B2:B7のキャッシュフローの内部収益率を計算してください。

NPVとIRR: どちらを信頼するか

問い使うもの理由
このプロジェクトは自社の資本コストで見合うか?NPVプラスのNPVは、今日のお金でそれだけの価値を加えます。
このプロジェクトの利回りは?IRR1つの割合で、ハードルレートと比べやすい。
規模の違う2つのプロジェクトのどちらか?NPVIRRは小さいプロジェクトに有利です。1,000に対する50%は、100,000に対する20%より少ないお金です。
符号が2回以上変わるキャッシュフローNPVIRRは答えが2つあるか、1つもないことがあります。
不規則な日付の支払いXNPV / XIRRNPVとIRRは期間が等しいと仮定します。

途中に何もなく、開始値と終了値の間の1つの成長率なら、IRRよりCAGRのほうが簡単です。ローンの返済額にはPMTを使います。

よくある質問

ExcelでNPVを計算するには?

=NPV(rate, 将来のキャッシュフロー) + 初期投資を使います。たとえばB2の投資をマイナスの数で入れて=NPV(10%,B3:B5)+B2です。NPVは最初の値を1期間後に入るものとして扱うので、今日使うお金はその外に置く必要があります。

ExcelのNPVが電卓と違う答えになるのはなぜですか?

たいていは初期投資を範囲の中に入れたからです。=NPV(10%,B2:B5)は0年目の金額まで1年分割り引いてしまいます。ExcelのNPVは最初のキャッシュフローの1期間前の現在価値で、時点0の値を含む教科書どおりのNPVではありません。

ExcelでIRRを計算するには?

マイナスの初期投資を含むすべてのキャッシュフローを1つの範囲に置き、=IRR(B2:B5)を使います。キャッシュフローは等間隔である必要があります。実際の日付なら=XIRR(values, dates)を使います。

ExcelでIRRが#NUM!を返すのはなぜですか?

すべてのキャッシュフローが同じ符号である(打ち消し合う率がない)か、Excelが20回の試行で率を見つけられなかったかのどちらかです。投資がマイナスになっているかを確かめ、2つ目の引数に推定値を指定します:=IRR(B2:B5,0.1)。

NPVとXNPVの違いは何ですか?

NPVはキャッシュフローの間隔が等しく、最初のものが1期間後に来ると仮定します。XNPVは各キャッシュフローの日付を受け取って正確な日数で割り引き、すべてを最初の日付まで割り引くので、投資を範囲の中に入れます。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める