XIRR 関数は、日付がばらばらの入金・出金から、年あたりの利回り(内部収益率)を求める関数です。=XIRR(B2:B6,A2:A6) のように、金額と日付の範囲を渡します。XNPV 関数は、同じ日付つきの金額を、決めた割引率で今の価値(現在価値)にします。
期間が 1 年ごとにそろっていない投資やローンの返済でも、日付どおりに計算できます。この記事では、2 つの関数の使い方を、実際の Excel で確かめた結果で説明します。
XIRR・XNPV 関数の書き方
=XIRR(金額の範囲, 日付の範囲, [推定値])
=XNPV(割引率, 金額の範囲, 日付の範囲)
| 引数 | 意味 |
|---|---|
| 金額の範囲 | 出したお金はマイナス、受け取ったお金はプラスで入れる |
| 日付の範囲 | 金額と同じ数の日付。1 つ目がいちばん早い日付 |
| 推定値(省略可) | XIRR の計算のはじめの値。ふつうは省略 |
| 割引率 | XNPV で使う年あたりの率(5% なら 5%) |
金額の中に、マイナスとプラスの両方が必要です。
1. 日付つきの利回りを出す(XIRR)
2026/1/1 に 100 万円を出して、日付がばらばらの 4 回で受け取ったときの利回りです。
=XIRR(B2:B6,A2:A6)

結果は 22.85% でした。1 年半で 120 万円を受け取ったときの、年あたりの利回りです。
2. 現在価値を出す(XNPV)
割引率 5% で、すべての金額を 2026/1/1 の価値にして合計します。
=XNPV(5%,B2:B6,A2:A6)

結果は 148,153 でした。プラスなので、年 5% より有利な投資ということになります。
3. 日付を使わない IRR とくらべる
IRR は日付を見ず、金額が 1 期ずつ等しい間隔で並んでいるとして計算します。
=IRR(B2:B6)

結果は 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)

結果は 0 でした。
【実機で検証】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 関数で求めます。

コメント