ExcelのCOUPDAYSNC関数の使い方|受渡日から次回利払日までの日数
債券を購入したあと、「次のクーポン(利息)受取日まであと何日?」を知りたいことがありますよね。残存日数を把握することで、次の利払いまでの資金繰り計画や、利回りの手計算検算に役立てられます。
ExcelのCOUPDAYSNC関数を使えば、受渡日から次の利払日(次回クーポン日)までの日数を引数4つで一発で出せます。COUPDAYBS関数・COUPDAYS関数とセットで覚えると、クーポン期間の全体像がすっきり整理できますよ。
この記事では、COUPDAYSNC関数の構文・実例・basis別の挙動・COUP系3関数の恒等式まで解説します。
ExcelのCOUPDAYSNC関数とは?
ExcelのCOUPDAYSNC関数(読み方:クーポン・デイズ・ネクスト・クーポン)は財務関数の一つです。受渡日から次の利払日(次回クーポン日)までの日数を返します。
関数名は「COUPon DAYS Next Coupon」の略です。COUPDAYBS が「直前利払日から受渡日まで」(過去方向)を見るのに対し、COUPDAYSNC は「受渡日から次の利払日まで」(未来方向)を見る関数です。
COUPDAYSNC関数が必要な場面
- 次回クーポン受取日までの日数を資金繰り計画に使いたいとき
- COUP系3関数の恒等式(COUPDAYBS + COUPDAYSNC = COUPDAYS)で数値を検算したいとき
- COUPNCD関数(次の利払日の日付)と組み合わせて残存クーポン期間を把握したいとき
COUPDAYSNC関数で扱える債券
定期的にクーポンを支払う利付債が対象です。
- 利付国債(10年債・5年債など)
- 利付社債
- 地方債
- 半年払い債券
- 四半期払い債券
割引証券(TB・CP)や満期一括利払い債には使いません。それぞれYIELDDISC関数やYIELDMAT関数が対応しています。
COUPDAYSNC関数の構文と引数
COUPDAYSNC関数の構文は次のとおりです。
=COUPDAYSNC(settlement, maturity, frequency, [basis])
引数は4つで、basisのみ省略可能です。COUPDAYBS関数・COUPDAYS関数とまったく同じ引数構成なので、3関数を並べて使うときも混乱しません。
| 引数 | 必須/省略 | 意味 |
|---|---|---|
| settlement | 必須 | 受渡日(証券の購入が完了する日) |
| maturity | 必須 | 満期日(償還日)。settlementより後の日付 |
| frequency | 必須 | 年間利払回数(1=年1回・2=半年1回・4=四半期1回) |
| basis | 省略可 | 日数計算基準(0〜4の整数。既定は0) |
settlement と maturity の関係
settlementは実際に代金を払って証券を受け取る日です。約定日(取引成立日)とは別物です。maturityはsettlementより後でなければ #NUM! エラーになります。
frequency 引数の選び方
| 値 | 利払頻度 | 主な対象 |
|---|---|---|
| 1 | 年1回払い | 一部の社債・外国債 |
| 2 | 半年払い | 国債・多くの社債 |
| 4 | 四半期払い | 地方債・一部社債 |
3(4か月ごと)や12(毎月払い)は指定できません。#NUM! エラーになります。
basis 引数の選び方
| 値 | 名称 | 主な対象 |
|---|---|---|
| 0(既定) | US 30/360 (NASD) | 米国社債 |
| 1 | Actual/Actual | 米国国債(実日数計算) |
| 2 | Actual/360 | 米国マネーマーケット |
| 3 | Actual/365 | 日本国内債券 |
| 4 | European 30/360 | 欧州社債 |
国債なら basis=1、日本国内の社債なら basis=3 が市場慣行です。
COUPDAYSNC関数の基本的な使い方
実例で動きを確認しましょう。
例1: 半年払い国債の次回利払日までの日数
10年物国債(半年払い)を受渡日に購入した場面です。
- 受渡日: 2026/5/7
- 満期日: 2030/11/7
- frequency: 2(半年払い)
- basis: 1(Actual/Actual)
=COUPDAYSNC(DATE(2026,5,7), DATE(2030,11,7), 2, 1)
結果は 184 が返ります。受渡日2026/5/7から次の利払日2026/11/7までの実日数が184日です。
例2: 年1回払い社債の次回利払日までの日数
- 受渡日: 2026/5/7
- 満期日: 2029/9/15
- frequency: 1(年1回払い)
- basis: 1
=COUPDAYSNC(DATE(2026,5,7), DATE(2029,9,15), 1, 1)
結果は 131 です。受渡日2026/5/7から次の利払日2026/9/15までの実日数が131日です。
例3: 四半期払い債券の次回利払日までの日数
- 受渡日: 2026/5/7
- 満期日: 2028/3/15
- frequency: 4(四半期払い)
- basis: 1
=COUPDAYSNC(DATE(2026,5,7), DATE(2028,3,15), 4, 1)
結果は 39 です。受渡日2026/5/7から次の利払日2026/6/15までの実日数が39日です。
引数をセル参照にする書き方
| セル | 内容 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/5/7 |
| B3 | 満期日 | 2030/11/7 |
| B4 | frequency | 2 |
| B5 | basis | 1 |
数式は =COUPDAYSNC(B2, B3, B4, B5) です。
basis別 COUPDAYSNC戻り値比較
basis引数によって日数が変わります。同じ半年払い国債(受渡日2026/5/7・満期日2030/11/7)で比較します。
| basis | 名称 | COUPDAYSNC戻り値 | 注記 |
|---|---|---|---|
| 0 | US 30/360 | 180 | 各月を30日固定で計算 |
| 1 | Actual/Actual | 184 | 実日数(2026/5/7〜2026/11/7) |
| 2 | Actual/360 | 184 | 実日数ベース |
| 3 | Actual/365 | 184 | 実日数ベース |
| 4 | European 30/360 | 180 | 欧州慣行の月末30日固定 |
basis=0と4は180日固定、basis=1/2/3は実日数になります。COUPDAYS と同じ傾向です。
COUPDAYBS・COUPDAYS・COUPDAYSNCの恒等式
COUP系3関数には常に成立する恒等式があります。
COUPDAYBS + COUPDAYSNC = COUPDAYS
「経過した日数(COUPDAYBS)」+「残りの日数(COUPDAYSNC)」=「クーポン期間全体(COUPDAYS)」です。
3関数の役割まとめ
| 関数 | 返す値 | 時間的方向 | 用途 |
|---|---|---|---|
| COUPDAYBS | 直前利払日〜受渡日の日数 | 過去方向 | 経過利息の分子 |
| COUPDAYS | クーポン期間全体の日数 | 期間全体 | 経過利息の分母 |
| COUPDAYSNC | 受渡日〜次の利払日の日数 | 未来方向 | 残存クーポン日数 |
具体例で恒等式を検算する
半年払い国債(受渡日2026/5/7・満期日2030/11/7・frequency=2・basis=1)で3関数を確認します。
=COUPDAYBS(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → ?
=COUPDAYS(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → ?
=COUPDAYSNC(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → ?
| 関数 | 戻り値 | 意味 |
|---|---|---|
| COUPDAYBS | 0 | 受渡日が利払日と同日(2026/5/7は利払日ではないが、最初の利払日前なら0になる場合も) |
| COUPDAYBS | (実際の計算値) | 直前利払日2025/11/7から受渡日2026/5/7まで |
| COUPDAYS | 184 | クーポン期間全体(2025/11/7→2026/11/7) |
| COUPDAYSNC | (実際の計算値) | 受渡日2026/5/7から次の利払日2026/11/7まで |
実際にセルに入力して確認してみてください。COUPDAYBS の戻り値と COUPDAYSNC の戻り値を足すと、必ず COUPDAYS の値と一致します。
別のシナリオで恒等式を確認
受渡日が利払日の直後(2026/5/7、利払日が2026/5/5と仮定)のケースを考えましょう。
- COUPDAYBS(5/5〜5/7)= 2日(ごく少ない)
- COUPDAYS = 184日
- COUPDAYSNC = 184 − 2 = 182日
受渡日が利払日の直後なら COUPDAYSNC は期間のほぼ全部(182日)になり、直前なら COUPDAYSNC はゼロに近づきます。この消長の関係を恒等式で把握しておくと、検算がスムーズですよ。
COUPNCD関数との組み合わせ
COUPDAYSNC は「次の利払日まで何日か」を返しますが、「次の利払日はいつか」を知りたい場合は COUPNCD 関数を使います。
| 関数 | 返す値 |
|---|---|
| COUPDAYSNC | 次の利払日までの日数(数値) |
| COUPNCD | 次の利払日の日付 |
| COUPPCD | 直前の利払日の日付 |
=COUPNCD(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → 2026/11/7
=COUPDAYSNC(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → 184
COUPNCD の日付から受渡日を引いた値(=COUPNCD – settlement)が COUPDAYSNC と一致します。どちらの表現が使いやすいか用途に合わせて選んでください。
関連する財務関数との全体像
| 債券タイプ | 価格関数 | 利回り関数 | 経過日数関数 |
|---|---|---|---|
| 定期利払い債(クーポン付) | PRICE | YIELD | COUPDAYBS / COUPDAYS / COUPDAYSNC |
| 割引証券(TB・CP) | PRICEDISC | YIELDDISC | (該当なし) |
| 満期一括利払い債 | PRICEMAT | YIELDMAT | (該当なし) |
COUPDAYBS・COUPDAYS・COUPDAYSNCの3関数は定期利払い債専用の経過日数ツールとして、セットで使うのが鉄則です。
よくあるエラーと対処法
#NUM! エラー
| 原因 | 対処法 |
|---|---|
| settlement ≧ maturity | 受渡日が満期日より前になるよう修正 |
| frequency が 1・2・4 以外 | 1、2、4 のいずれかを指定 |
| basis が 0〜4 以外 | 0〜4の整数を指定 |
frequency に 3(4か月ごと)や 12(毎月払い)を指定するミスが多いです。
#VALUE! エラー
settlementやmaturityが日付として認識されていないことが原因です。
誤: =COUPDAYSNC("2026-05-07", "2030-11-07", 2, 1)
正: =COUPDAYSNC(DATE(2026,5,7), DATE(2030,11,7), 2, 1)
セル参照を使う場合も、参照先のセルが「日付型」になっているか確認してください。
#NAME? エラー
関数名のスペルミスが原因です。「COUPDAYSNC」は「NC」の部分が「Next Coupon(次のクーポン)」の略です。「COUPDAYSNCD」「COUPDAYS_NC」は存在しません。
結果が想定と違う場合
basis引数の選択ミスで日数がずれるケースがあります。basis=0または4(30/360)と basis=1(Actual/Actual)では月末の日数の数え方が異なります。市場慣行に合ったbasisを選んでいるか確認してください。
まとめ
ExcelのCOUPDAYSNC関数は、受渡日から次の利払日(次回クーポン日)までの日数を返す財務関数です。本記事のポイントを振り返ります。
- 構文:
=COUPDAYSNC(settlement, maturity, frequency, [basis]) - 対象: 利付国債・利付社債・地方債など定期的にクーポンを支払う債券
- 方向: COUPDAYBS(過去方向・経過日数)に対し、COUPDAYSNC は未来方向(残存日数)
- 恒等式: COUPDAYBS + COUPDAYSNC = COUPDAYS が常に成立
- frequency: 1(年1回)・2(半年)・4(四半期)のみ有効
- basis: basis=0/4は30/360→月固定、basis=1/2/3は実日数
- 組み合わせ: COUPNCD と一緒に使うと「日付」と「日数」の両方が揃う
同シリーズのCOUPDAYBS関数・COUPDAYS関数・YIELD関数・PRICEMAT関数・YIELDDISC関数・RECEIVED関数もあわせて確認してみてください。債券財務関数の体系的な理解が深まりますよ。
