債券を購入したとき、「前回の利払いはいつだったの?」という起点日を確認したいことがあります。COUPPCD 関数はまさにそのための関数で、決済日の直前にあたる利払日(前回クーポン支払い日)の日付を返してくれますよ。
この記事では、スプレッドシートの COUPPCD 関数の使い方を、構文・実例・よくあるエラーの対処まで同僚に教える感覚で解説します。発生利息の起点日確認や COUPNCD 関数との対比も整理しているので、債券の利払いスケジュール管理に活用してください。
スプレッドシートの COUPPCD 関数とは?
スプレッドシートの COUPPCD 関数は、決済日(受渡日)の直前(または同日)の利払日(前回クーポン支払い日)の日付を返す財務関数です。
関数名の COUPPCD は “Coupon Previous Coupon Date”(前回のクーポン日)を略したものです。
COUPPCD が特に役立つのは発生利息(経過利息)計算です。発生利息は「直前の利払日から決済日まで経過した利息」のことで、その計算の起点となる日付が COUPPCD の返す値ですよ。
発生利息 = 額面 × 年率利率 ÷ 頻度 × (COUPDAYBS ÷ COUPDAYS)
この式の「直前の利払日(COUPDAYBS の起点)」が COUPPCD です。COUPDAYBS 関数が日数を返すのに対して、COUPPCD は日付そのものを返します。
返される値はシリアル値(日付の数値)なので、セルに「日付」の表示形式を設定して使うのが基本です。
COUPPCD 関数の構文と引数
COUPPCD 関数の構文は次のとおりです。
=COUPPCD(決済日, 満期日, 頻度, [日数計算方法])
英語表記だと =COUPPCD(settlement, maturity, frequency, [basis]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 決済日(settlement) | 必須 | 証券の受渡日(購入が完了する日)。DATE 関数での指定を推奨 |
| 満期日(maturity) | 必須 | 証券の満期日。決済日より後の日付を指定する |
| 頻度(frequency) | 必須 | 年間の利払い回数。1=年1回、2=半年払い、4=四半期払い |
| 日数計算方法(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
日数計算方法(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
結果はシリアル値で返ってくるため、セルの表示形式を「日付」に設定してください。表示形式を設定しないと整数(例: 46400)のような値が表示されますよ。
COUPPCD 関数の基本的な使い方
半年払い債券の直前の利払日を求める
年率5%・半年払い(frequency=2)の国債を、2026/4/22 に購入する場合の直前の利払日を求めます。満期日は 2028/10/22 とします。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 決済日 | 2026/4/22 |
| B3 | 満期日 | 2028/10/22 |
| B4 | 頻度 | 2 |
=COUPPCD(B2, B3, B4)
結果は 2025/10/22 です(セルを日付形式に設定した場合)。直前の利払日が 2025年10月22日であることがわかります。この日から 2026/4/22 の決済日までの日数が発生利息の計算に使われますよ。
DATE 関数を使って直接指定することもできます。
=COUPPCD(DATE(2026,4,22), DATE(2028,10,22), 2)
COUPNCD と対比して確認する
COUPPCD(直前の利払日)と COUPNCD(次の利払日)を並べると、決済日がクーポン期間のどのあたりにあるかが一目でわかります。
=COUPPCD(DATE(2026,4,22), DATE(2028,10,22), 2) → 2025/10/22(直前の利払日)
=COUPNCD(DATE(2026,4,22), DATE(2028,10,22), 2) → 2026/10/22(次の利払日)
2025/10/22 ~ 2026/4/22(決済日)~ 2026/10/22 という位置関係が確認できます。決済日はこのクーポン期間のちょうど中間にあることがわかりますよ。
発生利息の起点日として使う
COUPPCD は COUPDAYBS と組み合わせて発生利息を確認するときに使います。
直前の利払日(起点): =COUPPCD(DATE(2026,4,22), DATE(2028,10,22), 2) → 2025/10/22
経過日数(COUPDAYBS): =COUPDAYBS(DATE(2026,4,22), DATE(2028,10,22), 2, 1) → 183日
クーポン期間全体(COUPDAYS): =COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 1) → 366日
発生利息(額面100・年率5%): = 100 × 0.05 ÷ 2 × (183 ÷ 366) ≒ 2.50
「直前の利払日は 2025/10/22、そこから 183 日が経過しており、発生利息は約 2.50(額面100に対して)」という流れが確認できますよ。
年1回払い債券の直前の利払日を求める
年1回払い(frequency=1)の社債で決済日が 2026/4/22、満期日が 2029/9/15 の場合です。
=COUPPCD(DATE(2026,4,22), DATE(2029,9,15), 1)
結果は 2025/9/15 です。前回の利払いは 2025年9月15日で、そこから 2026/4/22 までの219日間が発生利息の経過期間ですよ。
COUP 系関数との関係
COUPPCD を軸に COUP 系関数の関係を整理します。
| 関数 | 返す値 | COUPPCD との関係 |
|---|---|---|
| COUPPCD | 直前の利払日(日付) | 発生利息計算の起点日 |
| COUPNCD | 次の利払日(日付) | COUPPCD から 1 期後 |
| COUPDAYBS | 直前の利払日〜決済日の日数 | COUPPCD から決済日まで |
| COUPDAYS | クーポン期間全体の日数 | COUPPCD から COUPNCD まで |
| COUPDAYSNC | 決済日〜次の利払日の日数 | 決済日から COUPNCD まで |
COUPPCD ←― COUPDAYBS ―→ 決済日 ←― COUPDAYSNC ―→ COUPNCD
↑←――――――――― COUPDAYS ―――――――――――――――→↑
COUPPCD と COUPNCD が「クーポン期間の両端」を定義し、COUPDAYBS・COUPDAYSNC・COUPDAYS がその期間内の日数を分割しているイメージですよ。
よくあるエラーと対処法
結果が日付ではなく数値で表示される
エラーではなく表示形式の問題です。COUPPCD はシリアル値(日付の数値)を返すため、セルの表示形式を「日付」に設定してください。
スプレッドシートでは「表示形式」→「数字」→「日付」を選ぶか、ショートカットで対応できますよ。
#NUM! エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 決済日 ≥ 満期日 | 決済日が満期日より前になるよう修正する |
| 頻度が1・2・4以外 | 1、2、4 のいずれかを指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
#VALUE! エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,22) のように DATE 関数を使うと確実ですよ。
#NAME? エラー
関数名のスペルミスが原因です。「COUPREVDATE」「COUP_PCD」などは存在しない関数名です。
Excel との互換性
COUPPCD 関数は Excel と Google スプレッドシートで同じ計算結果を返します。Excel ファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「決済日」「満期日」「頻度」「日数計算方法」)で表示されます。Excel の英語表記(settlement、maturity、frequency、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートの COUPPCD 関数は、決済日直前の利払日(日付)を返す財務関数です。ポイントをまとめておきます。
- 引数は決済日・満期日・頻度の3つが必須。日数計算方法(basis)は省略可
- 頻度(frequency)は1(年1回)・2(半年払い)・4(四半期払い)のみ有効
- 結果はシリアル値で返るため、セルの表示形式を「日付」に設定する
- COUPNCD 関数が「次の利払日」、COUPPCD が「直前の利払日」
- 発生利息計算の起点日として COUPDAYBS 関数 や COUPDAYS 関数 と組み合わせて使う
- Excel との互換性があり、.xlsx ファイルをそのまま開いても動作する
購入した債券の前回利払い日を確認したいときや、発生利息の計算フローを一覧表で整理したいときにぜひ活用してみてください。クーポン関連の財務関数はCOUPNCD 関数・COUPDAYBS 関数・COUPDAYS 関数・COUPDAYSNC 関数・COUPNUM 関数と合わせて使うと、債券の利払いスケジュール管理に役立ちますよ。
