債券を購入したあと、「次のクーポン(利息)はいつ受け取れるか? 今日から何日後か?」を素早く確認したいときにCOUPDAYSNC関数が役立ちますよ。スプレッドシートに4つの引数を入れるだけで、決済日から次の利払日までの日数がすぐに出てきます。
この記事では、スプレッドシートのCOUPDAYSNC関数の使い方を、構文・実例・よくあるエラーの対処まで同僚に教える感覚で解説します。COUPDAYBS関数やCOUPDAYS関数との使い分けも整理しているので、債券の発生利息計算や利払いスケジュール管理に活用してください。
スプレッドシートのCOUPDAYSNC関数とは?
スプレッドシートのCOUPDAYSNC関数は、決済日(受渡日)から次の利払日(クーポン支払い日)までの日数を返す財務関数です。
関数名のCOUPDAYSNCは “Coupon Days to Next Coupon”(次のクーポンまでの日数)を略したものです。
債券の発生利息を計算するとき、次の式が使われます。
発生利息 = 額面 × 年率利率 ÷ 利払い頻度 × (COUPDAYBS ÷ COUPDAYS)
COUPDAYSNC はこの式の計算には直接使いませんが、3つの関数には次の関係があります。
COUPDAYBS + COUPDAYSNC = COUPDAYS
「経過した日数(COUPDAYBS)」+「残りの日数(COUPDAYSNC)」=「クーポン期間全体の日数(COUPDAYS)」という関係ですよ。
COUPDAYSNC は「購入後、最初のクーポンを受け取るまで何日待つか」を確認したいときに特に役立ちます。
COUPDAYSNC関数の構文と引数
COUPDAYSNC関数の構文は次のとおりです。
=COUPDAYSNC(決済日, 満期日, 頻度, [日数計算方法])
英語表記だと =COUPDAYSNC(settlement, maturity, frequency, [basis]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 決済日(settlement) | 必須 | 証券の受渡日(購入が完了する日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 証券の満期日。決済日より後の日付を指定する |
| 頻度(frequency) | 必須 | 年間の利払い回数。1=年1回、2=半年1回(半年払)、4=四半期払 |
| 日数計算方法(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
日数計算方法(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
頻度(frequency)は1・2・4のみ有効です。それ以外の値を指定すると #NUM! エラーになりますよ。
COUPDAYSNC関数の基本的な使い方
半年払い債券の次の利払日までの残日数を求める
年率5%・半年払い(frequency=2)の国債を、2026/4/22に購入する場合の次の利払日までの残日数を求めます。満期日は2028/10/22とします。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 決済日 | 2026/4/22 |
| B3 | 満期日 | 2028/10/22 |
| B4 | 頻度 | 2 |
=COUPDAYSNC(B2, B3, B4, 1)
結果は 183 です。次の利払日である2026/10/22まで183日あることを示します(basis=1 の実日数計算)。
DATE関数を使って直接指定することもできます。
=COUPDAYSNC(DATE(2026,4,22), DATE(2028,10,22), 2, 1)
3つの関数の関係を確認する
同じ条件で COUPDAYBS・COUPDAYS・COUPDAYSNC をすべて計算してみます。
=COUPDAYBS(DATE(2026,4,22), DATE(2028,10,22), 2, 1) → 183(経過日数)
=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 1) → 366(期間全体)
=COUPDAYSNC(DATE(2026,4,22), DATE(2028,10,22), 2, 1) → 183(残り日数)
183(経過) + 183(残り) = 366(全体) で一致しますね。この例では決済日がクーポン期間の真ん中にあたっていますよ。
年1回払い債券の次の利払日までの残日数
年1回払い(frequency=1)の社債で決済日が2026/4/22、満期日が2029/9/15の場合です。
=COUPDAYSNC(DATE(2026,4,22), DATE(2029,9,15), 1, 1)
結果は 146 です。次の利払日2026/9/15まで146日あることがわかりますよ。
利払い日直前に購入した場合
決済日が次の利払日の1週間前(2026/10/15)の場合、ほぼ全額の経過利息を売主に支払うことになります。
=COUPDAYSNC(DATE(2026,10,15), DATE(2028,10,22), 2, 1) → 7
=COUPDAYBS(DATE(2026,10,15), DATE(2028,10,22), 2, 1) → 358
COUPDAYSNC が 7日と短く、COUPDAYBS が 358日と長い状態です。経過利息はほぼ1クーポン分(発生利息の比率 = 358÷365 ≒ 0.98)になりますよ。購入タイミングによってこの関係が変化することが確認できますね。
COUPDAYBS・COUPDAYSとの使い分け
3つの「COUP」系関数を一覧で整理します。
| 関数 | 返す値 | 主な用途 |
|---|---|---|
| COUPDAYBS | 直前の利払日〜決済日の日数 | 発生利息計算の分子(経過日数) |
| COUPDAYS | クーポン期間全体の日数 | 発生利息計算の分母(期間全体) |
| COUPDAYSNC | 決済日〜次の利払日の日数 | 次回クーポン受取までの残日数確認 |
COUPDAYSNC が特に役立つ場面:
- 購入後、最初のクーポンを受け取るまでの期間を把握したい
- 発生利息の比率を「残り日数 / 全体日数」として求めたい(= COUPDAYSNC ÷ COUPDAYS で未経過割合)
- 複数の債券候補を比較して、「より早くクーポンが受け取れる」ものを選びたい
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 決済日 ≥ 満期日 | 決済日が満期日より前になるよう修正する |
| 頻度が1・2・4以外 | 1、2、4 のいずれかを指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
特に頻度(frequency)は整数の1・2・4のみ有効で、3(4か月ごと)や6(隔月払い)などは指定できませんよ。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,22) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡す場合も、そのセルが「日付型」になっているかを確認してくださいね。
#NAME?エラー
関数名のスペルミスが原因です。「COUPDAYSNEXTCOUP」「COUP_DAYS_NC」などは存在しない関数名です。入力候補から選ぶようにしましょう。
Excelとの互換性
COUPDAYSNC関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「決済日」「満期日」「頻度」「日数計算方法」)で表示されます。Excelの英語表記(settlement、maturity、frequency、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのCOUPDAYSNC関数は、決済日から次の利払日までの日数を返す財務関数です。ポイントをまとめておきます。
- 引数は決済日・満期日・頻度の3つが必須。日数計算方法(basis)は省略可
- 頻度(frequency)は1(年1回)・2(半年払い)・4(四半期払い)のみ有効
- COUPDAYBS + COUPDAYSNC = COUPDAYS の関係になる
- 次の利払いまでの残日数確認や、「未経過利息の割合(COUPDAYSNC ÷ COUPDAYS)」の計算に役立つ
- 日付には DATE関数を使うと文字列とのトラブルを防げる
- Excelとの互換性があり、.xlsxファイルをそのまま開いても動作する
債券の次回クーポン受取日までの期間を確認したいときや、COUPDAYBS・COUPDAYSと組み合わせて発生利息の比率を求めるときにぜひ活用してみてください。クーポン関連の財務関数はCOUPDAYBS関数・COUPDAYS関数・COUPNCD関数・COUPPCD関数・COUPNUM関数と合わせて使うと、債券の利払いスケジュール管理に役立ちますよ。
