「発行時に利率2%で、利息は満期にまとめて払うタイプの社債を98で買ったら、年利回りは何%になるんだろう?」と聞かれて詰まったことはありませんか。クーポン付き債券でも割引債でもない「満期一括払い」タイプは、スプレッドシートのYIELDMAT関数で年利回りをスッと計算できますよ。
この記事では、スプレッドシートのYIELDMAT関数の使い方を、構文から実務の活用例・PRICEMAT関数との逆算関係・YIELD関数やYIELDDISC関数との使い分け・よくあるエラーの対処まで同僚に教える感覚で解説します。発行日・受渡日・満期日という3つの日付を扱う点が他の利回り関数と違うポイントなので、そこも含めてしっかり押さえていきましょうね。
スプレッドシートのYIELDMAT関数とは?
スプレッドシートのYIELDMAT関数は、期中に利息の支払いがなく、発行時からの利息が累積して満期に一括で支払われる債券について、年利回りを計算する財務関数です。
「満期一括払い」タイプの債券は、発行時に決められた利率に従って利息が累積し、満期日に「額面+累積利息」としてまとめて支払われる仕組みですよ。期中のクーポン支払いはないので、投資家は満期まで保有して一括で受け取ることになります。具体例としては、一部の割引社債や、発行時に利率が決められた短期の CP(コマーシャルペーパー)などが該当します。
YIELDMAT関数は、YIELDDISC関数(割引債・利息ゼロ)やYIELD関数(定期利払い債)とは別の、「満期一括利払い」という独特な債券タイプ専用の関数だと理解しておくとよいですよ。
YIELDMAT関数の構文と引数
YIELDMAT関数の構文は次のとおりです。
=YIELDMAT(受渡日, 満期日, 発行日, 利率, 現在価格, [日数計算基準])
英語表記だと =YIELDMAT(settlement, maturity, issue, rate, pr, [day_count_convention]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 債券の購入日(支払い完了日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 債券の満期日。受渡日より後の日付を指定する |
| 発行日(issue) | 必須 | 債券の発行日。受渡日以前の日付を指定する |
| 利率(rate) | 必須 | 債券の年利率(小数で指定。2%なら0.02) |
| 現在価格(pr) | 必須 | 額面100に対する現在の購入価格(例: 98.00) |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
YIELDDISC関数と違って、「発行日」と「利率」の2つが追加の引数になります。満期に支払われる利息が「発行日から満期日までの期間 × 利率」で決まるので、発行日が計算に必要になるんですよ。
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
現在価格(pr)は、実際の購入金額ではなく額面100を基準にした100分率で入れる点に注意してください(例: 額面100万円を98万円で購入するなら「98」と入力)。
YIELDMAT関数の基本的な使い方
1年物の満期利付債の利回りを求める
発行日2026/1/1・満期日2027/1/1・利率2%の満期一括払い社債を、2026/4/21に価格98.00で購入するケースを計算してみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2027/1/1 |
| B4 | 発行日 | 2026/1/1 |
| B5 | 利率 | 0.02 |
| B6 | 現在価格 | 98.00 |
=YIELDMAT(B2, B3, B4, B5, B6, 1)
結果は 約0.0514(約5.14%) です。利率2%の満期一括払い社債を98で買えば、クーポンなしで約5.14%の年利回りになる、というわけですよ。満期時に受け取る金額は「額面100+1年分の利息2=102」で、それに対して購入価格98で買っているので、差額分と利息分を合わせた年換算のリターンが計算されます。
直接日付を入れる場合はDATE関数を使います。
=YIELDMAT(DATE(2026,4,21), DATE(2027,1,1), DATE(2026,1,1), 0.02, 98.00, 1)
2年物の満期一括払い債の利回りを求める
発行日2026/4/1・満期日2028/4/1・利率3%の2年物満期一括払い債を、2026/4/21に価格96.50で購入するケースです。
=YIELDMAT(DATE(2026,4,21), DATE(2028,4,1), DATE(2026,4,1), 0.03, 96.50, 1)
結果は 約0.0513(約5.13%) です。発行からまだ日が浅い段階で購入するので、累積利息はほぼゼロに近く、価格と額面の差が利回りの主な源泉になりますよ。
発行から時間が経過した債券を購入するケース
同じ2年物の債券を、発行から1年後の2027/4/1に価格100.50で購入する場合を見てみます。利率3%なので、すでに1年分の利息(3)が累積していますよ。
=YIELDMAT(DATE(2027,4,1), DATE(2028,4,1), DATE(2026,4,1), 0.03, 100.50, 1)
結果は 約0.0249(約2.49%) です。額面100に対してすでに1年分の利息3が累積しているので、満期時には103を受け取れます。そこを100.50で買っているため、残り1年で2.5ポイントほど増える計算になりますよ。このように、購入時点が遅くなるほど累積利息が価格に織り込まれ、利回りの水準は変化します。
価格と利回りの関係を確認する
YIELDMAT関数では、現在価格が「額面+満期までの累積利息」に近づくほど利回りが低くなります。
| 価格の関係 | 利回りの傾向 | 例(1年物・利率2%・basis=1) |
|---|---|---|
| 価格 < 額面 | 高い利回り | 価格98.00 → 約4%前後 |
| 価格 ≒ 額面 | ほぼ利率と同水準 | 価格100.00 → 約2%前後 |
| 価格 > 額面 | 利率より低い利回り | 価格101.00 → 約1%前後 |
割引債(YIELDDISC)と違って、満期利付債では価格が額面を超えていても通常の投資対象になりえます。満期に「額面+利息」が支払われるので、額面を少し超える価格でも利回りがプラスになるケースがあるんですよ。
PRICEMAT関数との逆算関係
YIELDMAT関数はPRICEMAT関数と対になる関数で、同じ満期利付債の価格と利回りを双方向から計算できます。
| 関数 | 入力 | 出力 |
|---|---|---|
| PRICEMAT関数 | 希望利回り | 理論価格 |
| YIELDMAT関数 | 現在価格 | 年利回り |
=PRICEMAT(DATE(2026,4,21), DATE(2027,1,1), DATE(2026,1,1), 0.02, 0.05, 1)
→ 約98.15(希望利回り5%での理論価格)
=YIELDMAT(DATE(2026,4,21), DATE(2027,1,1), DATE(2026,1,1), 0.02, 98.15, 1)
→ 約0.0500(価格98.15での年利回り5%)
PRICEMATで出した理論価格をYIELDMATに入れると、元の希望利回り(5%)に戻ります。提示された価格が割高か割安かの判定にこの双方向チェックが役立ちますよ。市場で見つけた債券の提示価格をYIELDMATで利回り化し、自社の目標利回りと比較する流れが実務でよく使う組み合わせです。
YIELD・YIELDDISCとの使い分け
債券の利回り計算系関数には、YIELDMATのほかにYIELD関数とYIELDDISC関数があります。3つの違いは「対象とする債券のタイプ」で、PRICE系の3関数と完全に対応していますよ。
| 関数 | 対象債券 | 利息の扱い | 対応するPRICE系関数 |
|---|---|---|---|
| YIELD関数 | 定期利付債 | 期中にクーポン受取あり | PRICE関数 |
| YIELDDISC関数 | 割引債(ゼロクーポン債) | 期中の利息なし、満期に額面受取 | PRICEDISC関数 |
| YIELDMAT関数 | 満期利付債 | 利息は満期にまとめて受取 | PRICEMAT関数 |
判断ポイントは「いつ・どのように利息を受け取る債券か」です。半年や年1回など定期的にクーポンを受け取る一般的な社債・利付国債ならYIELD関数、利息ゼロで割引発行された短期国債(TB)やゼロクーポン債ならYIELDDISC関数、発行時からの利息が累積して満期にまとめて支払われるタイプならYIELDMAT関数を使いますよ。
同じ条件での違いを確認する
額面100・受渡日2026/4/21・満期日2027/4/21・価格97.00・basis=1・利率2%の場合の比較です。
| 関数 | 数式 | 結果の意味 |
|---|---|---|
| YIELD関数(年1回払い) | =YIELD(DATE(2026,4,21),DATE(2027,4,21),0.02,97.00,100,1,1) | 約5.15%(期中クーポン+差益) |
| YIELDDISC関数 | =YIELDDISC(DATE(2026,4,21),DATE(2027,4,21),97.00,100,1) | 約3.09%(差益のみ) |
| YIELDMAT関数(発行日同日) | =YIELDMAT(DATE(2026,4,21),DATE(2027,4,21),DATE(2026,4,21),0.02,97.00,1) | 約5.10%(満期一括利息+差益) |
YIELDMAT関数の結果は、期中でクーポンを受け取れないぶん、同じ利率・同じ価格でもYIELD関数より若干低くなるのが特徴です。途中受け取った利息を再投資できない(複利効果が弱い)ためですよ。一方、利息ゼロのYIELDDISCよりは累積利息があるぶん高くなります。
3つの日付の関係に注意する
YIELDMAT関数でつまずきやすいのが、発行日・受渡日・満期日という3つの日付の関係です。
| 日付 | 意味 | 順序関係 |
|---|---|---|
| 発行日(issue) | 債券が発行された日 | 最も早い |
| 受渡日(settlement) | あなたが購入する日 | 発行日以降、満期日より前 |
| 満期日(maturity) | 利息+額面が支払われる日 | 最も遅い |
発行日 ≤ 受渡日 < 満期日という関係を満たさないと、エラーや不正な結果になりますよ。発行日と受渡日が同日(新規発行時に購入)でも問題ありません。
新発の債券を購入する場合は、発行日と受渡日を同じ日にします。既発の債券(市場で流通しているもの)を買う場合は、発行日はその債券の発行時の日付、受渡日は今日(あるいは購入予定日)を指定してくださいね。
日数計算基準(basis)の選び方
YIELDMAT関数の日数計算基準(basis)は、対象債券の商品性に合わせて指定する必要があります。
| basis | 推奨される用途 |
|---|---|
| 0(30/360 NASD) | 米国社債の標準。省略時のデフォルト |
| 1(実際/実際) | 日本の国債・一般的な社債 |
| 2(実際/360) | 短期金融商品(CP、T-Bill等) |
| 3(実際/365) | 英国系の債券、日本の一部社債 |
| 4(30/360 欧州) | 欧州債の標準 |
basis の値を変えると利回りの結果が微妙に変わるので、対象債券の目論見書や発行要項で使われている方式に合わせるのが一番安全ですよ。社内で比較計算をするなら、最初にbasisのルールを決めておき、全員で統一するのがおすすめです。
迷ったら、日本の債券ならbasis=1、米国の短期CPなどならbasis=2を試してみるとよいでしょう。省略時のbasis=0(30/360 NASD)は米国慣行なので、必ずしも日本の債券に合うとは限りません。
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 発行日 > 受渡日 | 発行日を受渡日以前の日付に修正する |
| 利率 < 0 | 0以上の利率を指定する |
| 現在価格が0以下 | 正の数値を指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
特に発行日・受渡日・満期日の順序ミスがYIELDMAT関数特有の落とし穴なので、順番を必ず確認してくださいね。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡すときは、参照先のセルが日付書式になっているかも確認してください。
結果がマイナスになる
計算式自体は正常に動いていますが、現在価格が「満期受取額(額面+累積利息分)」を大幅に超えている状況を意味します。
| 原因 | 対処法 |
|---|---|
| 現在価格を高く入れすぎ | 額面100基準の値になっているか確認する |
| 利率の入力ミス | 2%なら0.02(%を小数化)になっているか確認する |
通常の投資判断ではマイナス利回りの債券を買うことはまれなので、結果がマイナスになったら入力値を見直してみてくださいね。
#NAME?エラー
関数名のスペルミスが原因です。「YIELDMATURITY」「YIELDMATU」などは存在しない関数名ですよ。スペルが不安なときは入力候補から選ぶようにしましょう。
Excelとの互換性
YIELDMAT関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「発行日」「利率」「現在価格」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、issue、rate、pr、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのYIELDMAT関数は、発行時からの利息が累積して満期に一括で支払われる債券の年利回りを計算する財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・発行日・利率・現在価格の5つが必須。日数計算基準(basis)は省略可
- 発行日 ≤ 受渡日 < 満期日の順序関係を守ること。YIELDMAT関数特有のつまずきポイント
- 現在価格は実際の金額ではなく、額面100を基準にした100分率で入力する
- 利率も小数で入れる(2%なら0.02)
- PRICEMAT関数と逆算の関係。価格↔利回りの双方向チェックに使える
- 定期利付債なら YIELD関数、利息ゼロの割引債なら YIELDDISC関数 と使い分ける
- YIELD関数より利回りは若干低め(途中で利息を受け取れず再投資できないため)
- 日本の債券は basis=1(実際/実際)、米国の短期CPなどは basis=2(実際/360)が目安
- 日付には DATE関数を使うと文字列とのトラブルを防げる
満期一括払いタイプの債券は実務で出会う頻度こそ高くないですが、「クーポンも割引債もどちらでもない」特殊なケースが出てきたら、ぜひYIELDMAT関数で利回りをチェックしてみてください。財務関数の使い分けには、YIELD関数・YIELDDISC関数・PRICEDISC関数・DISC関数の記事もあわせて参考にしてみてくださいね。
