ExcelのNPV関数とIRR関数には、あまり意識されない暗黙の前提があります。「キャッシュフローは等間隔(1年ごと)に発生する」という前提です。実務の案件は年度の途中でクロージングし、キャッシュフローは不規則な日付で発生します。この現実とのずれを解消するのが、XNPV関数とXIRR関数です。
本記事では、通常のNPV・IRR関数の落とし穴、XNPV・XIRRの使い方、両者の差が数字にどう現れるかの数値例、そして実務での使いどころを解説します。
通常のNPV・IRR関数の2つの落とし穴
落とし穴1:NPV関数は「1期先」から割り引く
NPV関数は、引数に入れた最初のキャッシュフローを「1期後」とみなして割り引きます。つまり今日発生する初期投資まで範囲に含めると、初期投資まで1年分割り引かれてしまいます。正しくは、初期投資は範囲の外に出して、=初期投資+NPV(割引率, 1年目以降のCF)と書く必要があります。NPVの解説記事でも触れている、最も有名なNPV関数の罠です。
落とし穴2:等間隔の前提
NPVもIRRも、キャッシュフローが正確に1年(1期)ごとに発生すると仮定します。しかし実際の投資は4月にクロージングして、初回の配当は8ヶ月後、売却は4年10ヶ月後、といった不規則な時間軸で動きます。等間隔前提のまま計算すると、時間の重みが実際とずれ、NPVもIRRも歪みます。
XNPV・XIRRの構文
XNPVとXIRRは、キャッシュフローに実際の日付を紐づけて計算する関数です。
| 関数 | 構文 | 特徴 |
|---|---|---|
| XNPV | =XNPV(割引率, キャッシュフロー範囲, 日付範囲) | 初日を割引の基準日とし、以降は経過日数÷365で割り引く |
| XIRR | =XIRR(キャッシュフロー範囲, 日付範囲, [推定値]) | 実日付ベースの年率IRRを返す |
重要な違いとして、XNPVは最初の日付のキャッシュフローを割り引かずそのまま計上します。つまりNPV関数のような「初期投資を外に出す」操作が不要で、初期投資を含めた全キャッシュフローを1つの範囲で渡せます。この点でも事故が起きにくい設計です。
数値例:IRRとXIRRはこれだけずれる
投資100を実行し、回収が不規則な日付で発生するケースを比べます。
| キャッシュフロー | IRR関数の想定(等間隔) | 実際の日付 |
|---|---|---|
| −100 | 0年目 | 2026年1月1日 |
| +30 | 1年後 | 2026年7月1日(半年後) |
| +40 | 2年後 | 2027年10月1日(1年9ヶ月後) |
| +60 | 3年後 | 2029年1月1日(3年後) |
このキャッシュフローをIRR関数で計算すると約13.2%ですが、実日付を使ったXIRRでは約15.4%になります。回収の一部が想定より早い日付で発生しているため、真の年率リターンは等間隔前提より高い、という結果です。2ポイントの差は、ハードルレートぎりぎりの案件では結論を左右します。
もうひとつ、XNPVには覚えておくべき仕様があります。割引の基準日は「日付範囲の最初の日付」です。つまり評価日を先頭行(キャッシュフロー0円でも構いません)に置けば、その日を基準にした現在価値が返ります。この行を入れ忘れて最初の入金日が基準日になってしまうと、NPV全体が入金日まで前倒しで評価され、静かにずれます。モデルには「評価日」の行を明示的に置くのが安全です。
ファンド・LBOモデルでの実装パターン
リターン計算でXIRRを使うときの定石は、日付とキャッシュフローの2列を「縦持ち」で管理することです。1列目に実日付(キャピタルコール日、配当支払日、売却クロージング日)、2列目に符号付きキャッシュフロー(出資はマイナス、回収はプラス)。行を追加するだけで自動的にIRRへ反映される作りにしておくと、案件の進行に合わせた更新が事故なく回ります。
四半期や月次で組んだモデルからXIRRに渡す場合は、各期の期末日を日付列として機械的に生成しておきます。手入力の日付はタイプミスの温床になるため、EOMONTH関数などで前の行から自動計算させるのが基本です。なお、紙とペンでIRRを概算する感覚(5年で2倍なら約15%)も併せて持っておくと、XIRRの出力の妥当性を一目で検算できます。この暗算の型はPaper LBOの解説で扱っています。
実務での使いどころ
第一に、PEファンドのトラックレコード計算です。ファンドのIRRは、キャピタルコール(出資払込)と分配の実日付で計算するのが業界標準であり、XIRRがそのまま使われます。第二に、M&A案件の投資リターン検証。クロージング日を起点に、配当・売却の実日付でリターンを測ります。第三に、不動産やプロジェクトファイナンスなど、月次・四半期のキャッシュフローが混在するモデルです。
一方、年次で組んだDCFモデルの中では通常のNPV型の割引計算(またはミッドイヤー調整)で十分であり、何でもXNPVにすればよいわけではありません。日付という入力が増える分、日付側のミスというリスクも増えるからです。
使う上での注意点
XIRRは反復計算で解を探すため、キャッシュフローの符号が複雑な場合に解が収束しない、または複数解の一つを返すことがあります。エラーが出る場合は第3引数の推定値(例:0.1)を与えてください。また、日付範囲に空白や文字列が混ざるとエラーになります。日付は必ずシリアル値(Excelの日付形式)で持ち、キャッシュフロー範囲と日付範囲の行数を一致させることが基本動作です。
関数を使わない派:割引係数を自分で組む方法とそのメリット
ここまで関数の話をしてきましたが、投資銀行やPEファンドの実務では、NPVもIRRも関数に頼らず「割引係数(ディスカウントファクター)の行を自分で組む」派が少なくありません。むしろ配布用の本格的なモデルでは、こちらが主流と言ってよいほどです。手順は次の4行で完結します。
| 行 | 数式の考え方 | 意味 |
|---|---|---|
| ①経過期間 t | 年次モデルなら 0, 1, 2…。実日付なら(各日付 − 評価日)÷ 365 | 評価日から何年後のキャッシュフローか |
| ②割引係数 | 1 ÷(1 + 割引率)の t 乗 | その時点の1円は今いくらか |
| ③現在価値 | キャッシュフロー × 割引係数 | 各期のキャッシュフローを今日の価値に直す |
| ④NPV | ③の合計 | 評価日の行(t=0)は割引係数1で、そのまま計上される |
IRRは「NPVがゼロになる割引率」なので、④のNPVをゼロにするように割引率のセルを動かせば求まります。Excelのゴールシーク(データ→What-If分析)で「NPVのセルを0に、割引率のセルを変化させて」と指定するのが最も簡単で、2つの割引率でのNPVから比例配分する補間法でも近い値が得られます。なお、投資が1回・回収が1回だけの単純なケースなら、回収倍率の年数乗根から1を引くだけでIRRが出ます——Paper LBOで使う暗算の型は、まさにこの「手組み」の最小形です。
この方法には、関数にはないメリットが5つあります。第一に透明性。レビュアーが割引係数を1セルずつ目で追えるため、モデルの監査可能性が格段に上がります。第二に柔軟性。期央割引(ミッドイヤー)、クロージング直後の端数期間、期間ごとに異なる割引率といった実務の要請に、①の列を書き換えるだけで対応できます。第三に、関数の暗黙の前提——「1期先から割り引く」「等間隔」——を構造的に排除できること。評価日の行を自分で置く以上、NPV関数の罠は物理的に起こりません。第四に検算になること。①の指数を日数ベースにすれば、手組みのNPVはXNPVと、ゴールシークで求めたIRRはXIRRと一致するはずで、一致しなければどちらかにミスがあります。第五に、IRRの本質(NPVをゼロにする率)を手で理解している人の説明は面接でも強い、ということです。
弱点もあります。ゴールシークは自動では再計算されないため、前提を変えるたびに実行し直す必要があります。実務の落とし所は「割引係数の行で本体を組み、その隣にXIRRを検算行として並べる」二段構えです。関数か手組みかの二者択一ではなく、手組みで構造を見せ、関数で答えを検証する——この組み合わせが、事故が少なく説明もしやすいモデルを作ります。
まとめ:時間の解像度を関数で選ぶ
NPV・IRRとXNPV・XIRRの違いは、時間をどの解像度で扱うかの違いです。年次の計画モデルでは通常関数、実日付が意味を持つリターン計算ではX系関数、という使い分けを覚えておけば、実務で迷うことはありません。IRRそのものの意味や落とし穴はIRRの解説記事で詳しく説明しています。
当サイトでは、投資銀行の実務水準の財務モデリング解説を公開しており、練習版のExcelファイルは無料でダウンロードできます。XIRRの挙動は自分で日付を動かして試すのが一番早いので、ぜひ手を動かして確かめてみてください。

