「この社債、額面100のところ98.5で買えるらしいけど、実際の利回りは何%になるの?」と聞かれてサッと答えられると、経理・財務や資産運用の現場でかなり頼りにされますよね。半年ごと・年1回など定期的に利息を受け取る利付債では、現在の購入価格から満期利回り(YTM)をスプレッドシートのYIELD関数で計算できますよ。
この記事では、スプレッドシートのYIELD関数の使い方を、構文から実務の活用例・PRICE関数との逆算関係・よくあるエラーの対処まで同僚に教える感覚で解説します。YIELDDISC・YIELDMAT関数との使い分けもあわせて整理しているので、社債・国債の利回りチェックに活用してくださいね。
スプレッドシートのYIELD関数とは?
スプレッドシートのYIELD関数は、定期的に利息を支払う利付債について、現在の購入価格に対応する満期利回り(年率)を計算する財務関数です。
「満期利回り」とは、債券を購入してから満期まで持ち続けたときに、受け取るクーポンと満期償還を含めて得られる実質的な年利回りのことです。英語ではYield to Maturity(YTM)と呼ばれ、債券投資で最も重要な指標のひとつですよ。
YIELD関数は、PRICE関数とちょうど逆の計算をします。PRICE関数が「希望利回り→理論価格」を求めるのに対し、YIELD関数は「現在価格→満期利回り」を求めます。同じ債券条件で2つの関数を組み合わせると、価格と利回りの双方向チェックができるようになりますよ。
YIELD関数の構文と引数
YIELD関数の構文は次のとおりです。
=YIELD(受渡日, 満期日, 利率, 現在価格, 満期受取額, 頻度, [日数計算基準])
英語表記だと =YIELD(settlement, maturity, rate, price, redemption, frequency, [basis]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 債券の購入日(支払い完了日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 債券の満期日。受渡日より後の日付を指定する |
| 利率(rate) | 必須 | 債券の年利クーポン率(例: 0.03 = 年3%) |
| 現在価格(price) | 必須 | 額面100に対する現在の購入価格(例: 95.51) |
| 満期受取額(redemption) | 必須 | 額面100に対する満期受取額(通常は100) |
| 頻度(frequency) | 必須 | 年あたりの利払い回数(1=年1回、2=半年ごと、4=四半期ごと) |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
現在価格(price)と満期受取額(redemption)は、どちらも額面100を基準にした数値を入れる点に注意してください。実際の購入金額(985,100円など)ではなく、100分率に換算した値(98.51)を使うのが基本ですよ。
YIELD関数の基本的な使い方
半年払い社債の利回りを求める
額面100・年利3%・半年ごと利払い・期間5年の社債を、現在価格95.51で購入する場合の満期利回りを求めてみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2031/4/21 |
| B4 | 利率(クーポン) | 0.03 |
| B5 | 現在価格 | 95.51 |
| B6 | 満期受取額 | 100 |
| B7 | 頻度(半年) | 2 |
=YIELD(B2, B3, B4, B5, B6, B7, 1)
結果は 約0.04(約4.0%) です。額面100の社債を95.51で買えば、満期まで持てば年利4%相当のリターンが得られるということですよ。割引分とクーポン受け取りの両方を含めた実質利回りが一発で出せます。
直接日付を入れる場合はDATE関数を使います。
=YIELD(DATE(2026,4,21), DATE(2031,4,21), 0.03, 95.51, 100, 2, 1)
年1回払い利付国債の利回りを求める
額面100・年利1.2%・年1回利払い・期間10年の利付国債を、現在価格97.23で購入するケースを計算します。
=YIELD(DATE(2026,4,21), DATE(2036,4,21), 0.012, 97.23, 100, 1, 1)
結果は 約0.015(約1.5%) です。低クーポン債でも、額面より安く買えればその分だけ利回りが上乗せされることが確認できますよ。利付国債の既発債を二次市場で買うときの実質利回りチェックに便利です。
価格と利回りの大小関係を確認する
YIELD関数の結果は、現在価格と額面(100)の関係で次のように変わります。
| 価格の関係 | 利回りの傾向 | 例(利率3%・5年・半年払い・basis=1) |
|---|---|---|
| 現在価格 < 100(ディスカウント) | クーポン率より高い利回り | 価格95.51 → 約4.00% |
| 現在価格 = 100(額面取引) | クーポン率と同じ利回り | 価格100.00 → 約3.00% |
| 現在価格 > 100(プレミアム) | クーポン率より低い利回り | 価格104.49 → 約2.00% |
「額面より安く買えれば、クーポン利回り以上のリターンになる」という直感どおりの動きですよ。市場金利の変動で債券価格が動いたとき、自分が買う価格での実質利回りがいくつになるかをサクッと確認できます。
PRICE関数との逆算関係
YIELD関数はPRICE関数と対になる関数で、同じ債券の価格と利回りを双方向から計算できます。
| 関数 | 入力 | 出力 |
|---|---|---|
| PRICE関数 | 希望利回り | 理論価格 |
| YIELD関数 | 現在価格 | 満期利回り |
同じサンプル(5年・利率3%・半年払い・basis=1)で双方向から計算してみると、きれいに対応していることが確認できますよ。
=PRICE(DATE(2026,4,21), DATE(2031,4,21), 0.03, 0.04, 100, 2, 1)
→ 約95.51(利回り4%での理論価格)
=YIELD(DATE(2026,4,21), DATE(2031,4,21), 0.03, 95.51, 100, 2, 1)
→ 約0.04(価格95.51での満期利回り)
PRICE関数で計算した理論価格をYIELD関数に入れ直すと、元の希望利回りに戻ります。この性質を使えば、「市場価格から逆算した実質利回り」と「希望利回りから計算した理論価格」を比較して、買いか待ちかを判断する使い方もできますよ。
YIELDDISC・YIELDMATとの使い分け
債券の利回り計算系関数には、YIELDのほかにYIELDDISC関数と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関数のほうが、同じ価格・利率条件でも利回りが高めになる傾向がありますよ。クーポンを再投資できる分だけ複利効果が乗るためです。
満期利回り(YTM)と現行利回りの違い
債券の利回りには似たような用語がいくつかあるので、混同しないよう整理しておきましょう。
| 指標 | 計算方法 | 含まれる要素 |
|---|---|---|
| クーポン利回り(表面利率) | 額面 × 利率 | クーポン支払いのみ(固定) |
| 現行利回り | 年間クーポン ÷ 現在価格 | クーポン支払い ÷ 現在価格 |
| 満期利回り(YTM) | YIELD関数で計算 | クーポン + 償還差益 + 再投資効果 |
YIELD関数が返すのは満期利回り(YTM)で、債券を満期まで持ち切ったときの実質的な年利回りです。クーポン収入だけでなく、購入価格と満期受取額の差(償還差益または差損)も含めた総合的な利回りが計算されますよ。
具体例で違いを確認する
額面100・利率3%・現在価格95.51・残存5年の社債で比較してみます。
| 指標 | 計算 | 結果 |
|---|---|---|
| クーポン利回り | 3% ÷ 100 | 3.00% |
| 現行利回り | 3 ÷ 95.51 | 約3.14% |
| 満期利回り(YIELD) | =YIELD(...) | 約4.00% |
同じ債券でも指標によって利回りが1%近く違いますよね。投資判断で他の債券と比較するときは、償還差益まで含めた満期利回り(YTM)を使うのが基本ですよ。現行利回りだけで判断すると、償還差益・差損を見落として誤った比較をしてしまうことがあります。
頻度・基準引数の選び方
YIELD関数の頻度(frequency)と日数計算基準(basis)は、対象債券の商品性に合わせて指定する必要があります。
頻度(frequency)の選び方
| 頻度 | 対応商品 |
|---|---|
| 1(年1回) | 日本の利付国債(多くの銘柄)、一部の社債 |
| 2(半年ごと) | 米国債、多くの社債、新発10年国債(旧ルール銘柄) |
| 4(四半期ごと) | 一部の変動利付債、仕組み債 |
日本の個人向け国債や多くの円建て社債は年1回払いが多いですが、米国債や外債は半年払いが基本ですよ。目論見書や商品概要書で利払い頻度を必ず確認してから入力してください。
日数計算基準(basis)の選び方
| basis | 推奨される用途 |
|---|---|
| 0(30/360 NASD) | 米国社債の標準。省略時のデフォルト |
| 1(実際/実際) | 国債など「経過日数を正確に数えたい」ケース。日本の国債で一般的 |
| 2(実際/360) | 短期金融商品(CP、TBなど) |
| 3(実際/365) | 英国系の債券、日本の一部社債 |
| 4(30/360 欧州) | 欧州債の標準 |
日本国内の債券ではbasis=1(実際日数)を使うケースが多いです。発行条件書に日数計算方式の記載があるので、迷ったら公式資料で確認しましょう。basisが違うと利回りが0.01〜0.1%程度変わることがありますよ。
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 利率が負の数 | 0以上の数値を指定する |
| 現在価格が0以下 | 正の数値を指定する |
| 満期受取額が0以下 | 正の数値を指定する(通常は100) |
| 頻度が 1, 2, 4 以外 | 1(年1回), 2(半年), 4(四半期)のいずれかを指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
頻度(frequency)は 1・2・4 の3択 という制約があります。月1回(12)や年6回(6)といった指定はできませんよ。また、現在価格(price)は必ず正の数で指定してください。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡すときは、参照先のセルが日付書式になっているかも確認してください。
#NAME?エラー
関数名のスペルミスが原因です。「YIELDS」「YEILD」などは存在しない関数名です。スペルが不安なときは入力候補から選ぶようにしましょう。
Excelとの互換性
YIELD関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「利率」「現在価格」「満期受取額」「頻度」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、rate、pr、redemption、frequency、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのYIELD関数は、定期的に利息を支払う利付債について、現在の購入価格に対応する満期利回り(YTM)を計算する財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・利率・現在価格・満期受取額・頻度の6つが必須。日数計算基準(basis)は省略可
- 現在価格と満期受取額は額面100を基準にした数値を入れる。返ってくる利回りは小数(0.04 = 4%)
- 頻度は 1, 2, 4 の3択。それ以外を指定すると #NUM! エラーになる
- 現在価格が額面より安ければ、満期利回りはクーポン率より高くなる
- PRICE関数と逆算の関係。価格↔利回りの双方向チェックに使える
- 割引債なら YIELDDISC関数、満期利付債なら YIELDMAT関数 を使い分ける
- クーポン利回り・現行利回りではなく、満期利回り(YTM)で他の債券と比較するのが基本
- 日付には DATE関数を使うと文字列とのトラブルを防げる
社債や利付国債の実質利回りチェック、既発債の価格から利回りを逆算するシミュレーションにぜひ活用してみてください。財務関数の使い分けには、PRICE関数・PRICEDISC関数・PRICEMAT関数の記事もあわせて参考にしてみてくださいね。
