XIRR・XNPV関数の使い方|日付がばらばらの入金・出金から利回りと現在価値を出す・IRRとの違い【実機で解説】

XIRR・XNPV関数の使い方|日付がばらばらの入金・出金から利回りと現在価値を出す・IRRとの違い【実機で解説】

XIRR 関数は、日付がばらばらの入金・出金から、年あたりの利回り(内部収益率)を求める関数です。=XIRR(B2:B6,A2:A6) のように、金額と日付の範囲を渡します。XNPV 関数は、同じ日付つきの金額を、決めた割引率で今の価値(現在価値)にします。

期間が 1 年ごとにそろっていない投資やローンの返済でも、日付どおりに計算できます。この記事では、2 つの関数の使い方を、実際の Excel で確かめた結果で説明します。

練習用Excelファイル(無料ダウンロード)
日付と金額(はじめに 100 万円を出して、4 回受け取る)の表と、この記事の XIRR・XNPV の式をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

XIRR・XNPV 関数の書き方

=XIRR(金額の範囲, 日付の範囲, [推定値])
=XNPV(割引率, 金額の範囲, 日付の範囲)
引数意味
金額の範囲出したお金はマイナス、受け取ったお金はプラスで入れる
日付の範囲金額と同じ数の日付。1 つ目がいちばん早い日付
推定値(省略可)XIRR の計算のはじめの値。ふつうは省略
割引率XNPV で使う年あたりの率(5% なら 5%)

金額の中に、マイナスとプラスの両方が必要です。

1. 日付つきの利回りを出す(XIRR)

2026/1/1 に 100 万円を出して、日付がばらばらの 4 回で受け取ったときの利回りです。

=XIRR(B2:B6,A2:A6)
エクセルのXIRR関数で日付がばらばらの入金と出金から年あたりの利回りを求めた画面
エクセルのXIRR関数で日付がばらばらの入金と出金から年あたりの利回りを求めた画面

結果は 22.85% でした。1 年半で 120 万円を受け取ったときの、年あたりの利回りです。

2. 現在価値を出す(XNPV)

割引率 5% で、すべての金額を 2026/1/1 の価値にして合計します。

=XNPV(5%,B2:B6,A2:A6)
エクセルのXNPV関数で割引率5パーセントのときの日付つきの金額の現在価値を求めた画面
エクセルのXNPV関数で割引率5パーセントのときの日付つきの金額の現在価値を求めた画面

結果は 148,153 でした。プラスなので、年 5% より有利な投資ということになります。

3. 日付を使わない IRR とくらべる

IRR は日付を見ず、金額が 1 期ずつ等しい間隔で並んでいるとして計算します。

=IRR(B2:B6)
エクセルのIRR関数で同じ金額の利回りを日付を使わずに求めてXIRRとくらべた画面
エクセルのIRR関数で同じ金額の利回りを日付を使わずに求めてXIRRとくらべた画面

結果は 6.96% で、XIRR の 22.85% とは大きくちがいました。IRR は「1 期あたり」の率なので、日付がばらばらのときは XIRR を使います。

4. XIRR の率で XNPV を出すと 0 になる

XIRR は「XNPV が 0 になる割引率」です。確かめてみます。

=ROUND(XNPV(XIRR(B2:B6,A2:A6),B2:B6,A2:A6),0)
エクセルのXNPV関数にXIRRの利回りを入れて現在価値が0になることを確かめた画面
エクセルのXNPV関数にXIRRの利回りを入れて現在価値が0になることを確かめた画面

結果は 0 でした。

【実機で検証】XIRR でつまずくところ

エクセルのXIRR関数で日付の範囲の大きさや順番がちがうときやプラスだけのときの結果を確かめた画面
エクセルのXIRR関数で日付の範囲の大きさや順番がちがうときやプラスだけのときの結果を確かめた画面
ためしたこと式結果
日付の範囲が 1 つ少ない(A2:A5)=XIRR(XIRR!B2:B6,XIRR!A2:A5)#NUM!
金額がプラスだけ=XIRR({100,200},{46023,46388})#NUM!
2 つ目の日付が 1 つ目より前=XIRR({-100,60,60},{46023,45900,46388})#NUM!
2 つ目以降の日付の順番を入れかえ=XIRR({-100,60,60},{46023,46388,46200})28.19%
割引率 0 の XNPV=XNPV(0,XIRR!B2:B6,XIRR!A2:A6)#NUM!
金額の合計(SUM)=SUM(XIRR!B2:B6)200,000

日付の範囲が金額より 1 つ少ないと #NUM! になりました。金額と日付は同じ数にします。金額がプラスだけだと #NUM! です。

1 つ目より前の日付があると #NUM! になりました。1 つ目の日付をいちばん早くします。2 つ目以降の順番を入れかえるだけなら 28.19% で、計算できました。

割引率に 0 を入れた XNPV は #NUM! で、金額の合計 200,000 にはなりませんでした。XNPV の割引率は 0 より大きい値にします。

よくある質問

毎月・毎年など間隔がそろっているときは?

間隔が同じなら NPV・IRR 関数でも計算できます。

XIRR が #NUM! になるときは?

金額にマイナスとプラスの両方があるか、1 つ目の日付がいちばん早いか、金額と日付の数が同じかを確かめます。

ローンの返済額や利率を出したいときは?

毎月同じ額の返済なら PMT 関数、利率は RATE 関数で求めます。

練習用Excelファイル(無料ダウンロード)
この記事の例をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次