「利息の支払いなしで購入し、満期日に額面金額を受け取る証券」はどのくらいの利率になるのかを計算したいことがありますよね。社債や定期預金の評価シミュレーションにも役立つ関数です。
この記事では、スプレッドシートのINTRATE関数の使い方を、構文から実務の活用例・よくあるエラーの対処まで同僚に教える感覚で解説します。DISC関数との使い分けもあわせて整理しているので、有価証券・財務シミュレーションで活用してください。
スプレッドシートのINTRATE関数とは?
スプレッドシートのINTRATE関数は、全額投資(割引発行)の有価証券について、購入価格・満期受取額・期間から年利率を計算する財務関数です。
「全額投資の証券」とは、途中で利息(クーポン)の支払いがなく、購入時に全額を支払い、満期日に元金+利益の合計を一括で受け取るタイプの金融商品です。日本国内だとゼロクーポン債(割引債)がこれにあたります。
INTRATE関数は「購入価格から満期受取額への増加率を年率換算する」計算をしています。定期預金のシミュレーションや、利払いなしの社債評価などで使われますよ。
INTRATE関数の構文と引数
INTRATE関数の構文は次のとおりです。
=INTRATE(受渡日, 満期日, 投資額, 満期受取額, [日数計算基準])
英語表記だと =INTRATE(settlement, maturity, investment, redemption, [basis]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 証券の購入日(支払い完了日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 証券の満期日。受渡日より後の日付を指定する |
| 投資額(investment) | 必須 | 証券の購入金額(現在払い出す金額) |
| 満期受取額(redemption) | 必須 | 満期日に受け取る金額。投資額より大きい値を指定する |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
日本の慣行に合わせる場合は basis=1(実際の日数ベース)を使うことが多いですよ。
INTRATE関数の基本的な使い方
シンプルな割引債の利率を求める
購入価格95万円・満期受取額100万円・期間1年の割引債の利率を求めてみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2027/4/21 |
| B4 | 投資額 | 950,000 |
| B5 | 満期受取額 | 1,000,000 |
=INTRATE(B2, B3, B4, B5, 1)
結果は 約0.0526(5.26%) です。95万円で買って1年後に100万円になるのは、年利約5.26%に相当しますよ。
直接日付を入れる場合はDATE関数を使います。
=INTRATE(DATE(2026,4,21), DATE(2027,4,21), 950000, 1000000, 1)
2年間の投資利率を求める
2年間で980万円を投資して、満期に1,100万円受け取る場合の年利率を計算します。
=INTRATE(DATE(2026,1,1), DATE(2028,1,1), 9800000, 11000000, 1)
結果は 約0.0612(6.12%) です。2年間の総収益12.24%(120万円/980万円)を年率換算するとこの数値になりますよ。
定期預金の実質利率をシミュレーションする
100万円を預けて3年後に112万円になる定期預金の利率を確認してみましょう。
=INTRATE(DATE(2026,4,21), DATE(2029,4,21), 1000000, 1120000, 1)
結果は 約0.04(4%) です。毎年4%ずつ単純増加ではなく、3年間の純増額から逆算した「平均利回り」として理解してください。複利での精密な利率計算にはIRR関数やRRI関数を使う方がより正確ですよ。
DISC関数との使い分け
財務関数の中でINTRATE関数と混同しやすいのがDISC関数です。どちらも割引証券・全額投資証券に関係しますが、計算するものが異なります。
| 比較項目 | INTRATE関数 | DISC関数 |
|---|---|---|
| 計算するもの | 全額投資の利率(投資額→満期受取額の増加率) | 割引率(額面金額に対する割引額の比率) |
| 分母 | 投資額(購入価格) | 満期受取額(額面) |
| 主な用途 | ゼロクーポン債・割引債の収益率計算 | 商業手形・短期国債の割引率確認 |
| 結果の傾向 | DISC関数より高い値になる | INTRATE関数より低い値になる |
判断ポイントは「利率の基準を購入価格にするか額面にするか」です。投資家目線で「いくら出してどれだけ増えたか」を見るならINTRATE関数、発行体目線で「額面の何%割引で発行したか」を見るならDISC関数が適していますよ。
同じ条件で比較する
95万円投資→100万円満期(1年、basis=1)の場合:
| 関数 | 数式 | 結果 |
|---|---|---|
| INTRATE関数 | =INTRATE(DATE(2026,4,21),DATE(2027,4,21),950000,1000000,1) | 約5.26% |
| DISC関数 | =DISC(DATE(2026,4,21),DATE(2027,4,21),950000,1000000,1) | 約5.00% |
INTRATE関数は投資額(95万円)を基準にするので、DISC関数(額面100万円基準)より高い値になります。どちらが正しいというわけではなく、視点の違いですよ。
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 投資額が0以下 | 正の数値を指定する |
| 満期受取額が0以下 | 正の数値を指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
投資額と満期受取額の大小関係に制約はないので、投資額が満期受取額より大きくてもエラーにはなりません(ただし負の利率が返ります)。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。
#NAME?エラー
関数名のスペルミスが原因です。「INTRRATE」「INRATE」などは存在しない関数名です。入力候補から選ぶようにしましょう。
Excelとの互換性
INTRATE関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作します。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「投資額」「満期受取額」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、investment、redemption、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのINTRATE関数は、全額投資の有価証券について購入価格と満期受取額から年利率を求める財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・投資額・満期受取額の4つが必須。日数計算基準(basis)は省略可
- 利率の基準は投資額(購入価格)。額面基準で計算するDISC関数より高い値になる
- 日付には DATE関数を使うと文字列とのトラブルを防げる
- 受渡日 ≥ 満期日の場合は #NUM! エラーになる
- Excelとの互換性があり、.xlsxファイルをそのまま開いても動作する
割引債の収益率確認や、定期預金の平均利回りシミュレーションにぜひ活用してみてください。財務系のINTRATE関数との使い分けには、DISC関数やRECEIVED関数の記事もあわせて参考にしてみてくださいね。
