「額面100の短期国債を99.5で買えるって聞いたけど、年利に換算すると何%になるの?」と聞かれたときに、スプレッドシートでサッと計算できると経理・財務の現場でかなり頼りにされますよね。利息の支払いがなく満期に額面で償還される割引債は、スプレッドシートのYIELDDISC関数で年利回りを一発で計算できますよ。
この記事では、スプレッドシートのYIELDDISC関数の使い方を、構文から実務の活用例・PRICEDISC関数との逆算関係・よくあるエラーの対処まで同僚に教える感覚で解説します。YIELD・YIELDMAT関数との使い分けもあわせて整理しているので、短期国債(TB)や割引発行された社債の利回りチェックに活用してくださいね。
スプレッドシートのYIELDDISC関数とは?
スプレッドシートのYIELDDISC関数は、利息の支払いがなく満期に額面で償還される割引債について、年利回りを計算する財務関数です。
「割引債」とは、額面より安い価格で発行され、満期時に額面で償還される債券のことです。期中にクーポン(利息)の支払いはなく、購入価格と満期受取額の差額(償還差益)が投資家のリターンになりますよ。代表例としては、日本の短期国債(TB / 国庫短期証券)や、米国のT-Bill(財務省短期証券)などがあります。
YIELDDISC関数は、PRICEDISC関数とちょうど逆の計算をします。PRICEDISC関数が「希望利回り→理論価格」を求めるのに対し、YIELDDISC関数は「現在価格→年利回り」を求めます。同じ割引債の条件で2つの関数を組み合わせれば、価格と利回りの双方向チェックができますよ。
YIELDDISC関数の構文と引数
YIELDDISC関数の構文は次のとおりです。
=YIELDDISC(受渡日, 満期日, 現在価格, 満期受取額, [日数計算基準])
英語表記だと =YIELDDISC(settlement, maturity, pr, redemption, [day_count_convention]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 債券の購入日(支払い完了日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 債券の満期日。受渡日より後の日付を指定する |
| 現在価格(pr) | 必須 | 額面100に対する現在の購入価格(例: 99.5) |
| 満期受取額(redemption) | 必須 | 額面100に対する満期受取額(通常は100) |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
引数はYIELD関数より2つ少ない5つだけで済みます。利息のやり取りがない割引債なので、利率(rate)と利払い頻度(frequency)の指定が不要なんですよ。
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
現在価格(pr)と満期受取額(redemption)は、どちらも額面100を基準にした数値を入れる点に注意してください。実際の購入金額(995,000円など)ではなく、100分率に換算した値(99.5)を使うのが基本ですよ。
YIELDDISC関数の基本的な使い方
1年物の割引債の利回りを求める
額面100の1年物割引債を、現在価格97.00で購入する場合の年利回りを求めてみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2027/4/21 |
| B4 | 現在価格 | 97.00 |
| B5 | 満期受取額 | 100 |
=YIELDDISC(B2, B3, B4, B5, 1)
結果は 約0.0309(約3.09%) です。額面100の割引債を97.00で買って満期まで保有すれば、1年間で約3.09%のリターンが得られるということですよ。
直接日付を入れる場合はDATE関数を使います。
=YIELDDISC(DATE(2026,4,21), DATE(2027,4,21), 97.00, 100, 1)
半年物の短期国債(TB)の利回りを求める
額面100・残存日数183日の短期国債を、現在価格99.50で購入するケースを計算します。短期金融商品は「実際/360」方式(basis=2)を使うのが一般的ですよ。
=YIELDDISC(DATE(2026,4,21), DATE(2026,10,21), 99.50, 100, 2)
結果は 約0.0099(約0.99%) です。たった0.5ポイントの差でも、半年というわずかな期間で得るリターンを年率換算すると1%近い利回りになる、という関係が確認できますよ。
3ヶ月物の短期国債(TB)の利回りを求める
より短期の3ヶ月物(91日)の割引債を、現在価格99.85で購入するケースです。
=YIELDDISC(DATE(2026,4,21), DATE(2026,7,21), 99.85, 100, 2)
結果は 約0.0059(約0.59%) です。短期になるほど同じ利回りでも価格と額面の差が小さくなりますが、年率換算すれば他の債券と比較できる指標になりますよ。法人の余剰資金を短期国債で運用するときの利回り比較にそのまま使えます。
価格と利回りの関係を確認する
YIELDDISC関数の結果は、現在価格が額面(100)からどれだけ離れているかで決まります。
| 価格の関係 | 利回りの傾向 | 例(1年物・basis=1) |
|---|---|---|
| 現在価格 < 100 | プラスの利回り | 価格97.00 → 約3.09% |
| 現在価格 ≒ 100 | ほぼゼロの利回り | 価格99.90 → 約0.10% |
| 現在価格 > 100 | マイナスの利回り(通常は買わない) | 価格100.50 → 約-0.50% |
割引債は「額面より安く買って満期に額面で受け取る」のが前提なので、通常は現在価格が額面より低くなります。もし現在価格が額面を超える場合、YIELDDISC関数はマイナスの利回りを返しますよ。市場でそういう価格がついていたら、何らかの特殊事情があるサインとして受け止めるとよいでしょう。
PRICEDISC関数との逆算関係
YIELDDISC関数はPRICEDISC関数と対になる関数で、同じ割引債の価格と利回りを双方向から計算できます。
| 関数 | 入力 | 出力 |
|---|---|---|
| PRICEDISC関数 | 希望割引率 | 理論価格 |
| YIELDDISC関数 | 現在価格 | 年利回り |
ただし、ここで1点だけ注意したいのは、PRICEDISC関数が使うのは「割引率(discount rate)」であって、YIELDDISC関数が返す「年利回り」とは意味が違うという点です。
| 指標 | 計算方法 | 基準になる金額 |
|---|---|---|
| 割引率(DISC) | (額面 – 価格) ÷ 額面 × (B/DSM) | 額面を基準にした割引幅 |
| 年利回り(YIELDDISC) | (額面 – 価格) ÷ 価格 × (B/DSM) | 購入価格を基準にした実質利回り |
分母が「額面」か「購入価格」かで、同じ債券でも割引率と年利回りは微妙に異なる値になりますよ。日本の短期国債の入札結果発表ではよく「割引率」で表示されますが、他の金融商品と比較するときは購入価格ベースの年利回り(YIELDDISC)に換算する必要があります。
=PRICEDISC(DATE(2026,4,21), DATE(2027,4,21), 0.03, 100, 1)
→ 約97.00(割引率3%での理論価格)
=YIELDDISC(DATE(2026,4,21), DATE(2027,4,21), 97.00, 100, 1)
→ 約0.0309(価格97.00での年利回り 約3.09%)
割引率3%で発行された債券を買うと、実際の年利回りは3.09%になる、というわけですよ。両者の差は小さく見えますが、短期で回転させる資金運用では積み重なると意味が出てきます。
YIELD・YIELDMATとの使い分け
債券の利回り計算系関数には、YIELDDISCのほかにYIELD関数とYIELDMAT関数があります。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の場合の比較です。
| 関数 | 数式 | 結果の意味 |
|---|---|---|
| YIELD関数(年1回払い・利率2%) | =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関数(発行日同日・利率2%) | =YIELDMAT(DATE(2026,4,21),DATE(2027,4,21),DATE(2026,4,21),0.02,97.00,1) | 約5.10%(満期一括利息+差益) |
同じ価格条件でも、期中にクーポンを受け取れるYIELD関数のほうが利回りが高くなります。YIELDDISC関数は差益(償還差益)だけの利回りなので、クーポン付き債券と比較する際はこの違いを意識してくださいね。
DISC関数との違い
YIELDDISC関数とよく混同されるのが、DISC関数です。どちらも割引債を対象にしますが、返す値の意味が異なりますよ。
| 関数 | 返す値 | 利用シーン |
|---|---|---|
| DISC関数 | 割引率(額面基準) | 入札結果や発行時の割引率表示 |
| YIELDDISC関数 | 年利回り(購入価格基準) | 他の金融商品との利回り比較 |
日本の短期国債の入札結果では割引率(DISC関数が返す値)で発表されることが多いので、発表値をそのまま使いたい場合はDISC関数、他の定期預金や社債と利回り比較したい場合はYIELDDISC関数、と使い分けるのがおすすめですよ。
満期受取額は「額面100」基準で入力する
YIELDDISC関数でつまずきやすいのが、現在価格(pr)と満期受取額(redemption)の入力方法です。
| NGの例 | OKの例 |
|---|---|
| 購入金額そのまま(970,000) | 額面100に対する価格(97.00) |
| 満期受取額そのまま(1,000,000) | 額面100に対する受取額(100) |
どちらも額面100を基準にした100分率の値を入れるのがルールですよ。実際の購入金額・受取金額をそのまま入れるとエラーや不正な結果になります。
たとえば額面100万円の割引債を97万円で買う場合は、「現在価格97、満期受取額100」と入力します。額面10万円の債券を9万7千円で買う場合も、単位を揃えて「97, 100」と入力すればOKです。100分率に換算したうえで入力すると覚えておいてくださいね。
実際の投資金額ベースでリターン額を知りたい場合は、別途「投資金額 × 利回り × 保有期間」などで計算するとわかりやすいですよ。RECEIVED関数を使えば割引債の満期受取額そのものを求めることもできます。
日数計算基準(basis)の選び方
YIELDDISC関数の日数計算基準(basis)は、対象債券の商品性に合わせて指定する必要があります。
| basis | 推奨される用途 |
|---|---|
| 0(30/360 NASD) | 米国社債の標準。省略時のデフォルト |
| 1(実際/実際) | 日本の国債で一般的な方式 |
| 2(実際/360) | 短期金融商品(TB、CP、米T-Billなど)で標準 |
| 3(実際/365) | 英国系の債券、日本の一部社債 |
| 4(30/360 欧州) | 欧州債の標準 |
日本の短期国債(TB)は「実際/365」または「実際/360」で計算するケースが多いです。財務省の発表値に合わせたい場合は、事前に入札要項や結果表の計算方式を確認してから指定してくださいね。basisが違うと利回りが0.01〜0.1%程度変わることがありますよ。
迷ったら、まずは省略(basis=0)ではなく、短期商品ならbasis=2、長期の割引債ならbasis=1を試してみるのがおすすめです。省略時のbasis=0(30/360 NASD)は米国慣行なので、日本の債券にはあまり合いません。
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 現在価格が0以下 | 正の数値を指定する |
| 満期受取額が0以下 | 正の数値を指定する(通常は100) |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
現在価格(pr)と満期受取額(redemption)は必ず正の数で指定してください。マイナスや0を入れると即エラーになりますよ。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡すときは、参照先のセルが日付書式になっているかも確認してください。
結果がマイナスになる
計算式自体は正常に動いていますが、現在価格が満期受取額より大きい状況を意味します。
| 原因 | 対処法 |
|---|---|
| 現在価格 > 満期受取額の入力ミス | 価格と受取額を入れ替えていないか確認する |
| 額面100基準に換算し忘れ | 購入金額そのものを入れていないか確認する |
通常の割引債では現在価格 < 満期受取額となるはずなので、マイナス結果が出たときは入力値を見直してみてくださいね。
#NAME?エラー
関数名のスペルミスが原因です。「YIELDDISCOUNT」「YIELDDIS」などは存在しない関数名です。スペルが不安なときは入力候補から選ぶようにしましょう。
Excelとの互換性
YIELDDISC関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「現在価格」「満期受取額」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、pr、redemption、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのYIELDDISC関数は、利息の支払いがなく満期に額面で償還される割引債について、年利回りを計算する財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・現在価格・満期受取額の4つが必須。日数計算基準(basis)は省略可
- 現在価格と満期受取額は額面100を基準にした数値を入れる。返ってくる利回りは小数(0.0309 = 3.09%)
- 現在価格が額面より安ければプラスの利回り、高ければマイナスの利回りになる
- PRICEDISC関数と逆算の関係。価格↔利回りの双方向チェックに使える
- DISC関数が返す「割引率」とは違い、YIELDDISCは購入価格を基準にした「年利回り」を返す
- 利付債なら YIELD関数、満期一括利払い債なら YIELDMAT関数 を使い分ける
- 短期国債(TB)は basis=2(実際/360)、日本の長期割引債は basis=1(実際/実際)が目安
- 日付には DATE関数を使うと文字列とのトラブルを防げる
短期国債(TB)や割引発行された社債の実質利回りチェック、入札結果の割引率を他の金融商品と比較するシミュレーションにぜひ活用してみてください。財務関数の使い分けには、YIELD関数・PRICEDISC関数・DISC関数・RECEIVED関数の記事もあわせて参考にしてみてくださいね。
