ExcelのCOUPDAYSNC関数の使い方|受渡日から次回利払日までの日数

スポンサーリンク

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)米国社債
1Actual/Actual米国国債(実日数計算)
2Actual/360米国マネーマーケット
3Actual/365日本国内債券
4European 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
B4frequency2
B5basis1

数式は =COUPDAYSNC(B2, B3, B4, B5) です。

basis別 COUPDAYSNC戻り値比較

basis引数によって日数が変わります。同じ半年払い国債(受渡日2026/5/7・満期日2030/11/7)で比較します。

basis名称COUPDAYSNC戻り値注記
0US 30/360180各月を30日固定で計算
1Actual/Actual184実日数(2026/5/7〜2026/11/7)
2Actual/360184実日数ベース
3Actual/365184実日数ベース
4European 30/360180欧州慣行の月末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)  → ?
関数戻り値意味
COUPDAYBS0受渡日が利払日と同日(2026/5/7は利払日ではないが、最初の利払日前なら0になる場合も)
COUPDAYBS(実際の計算値)直前利払日2025/11/7から受渡日2026/5/7まで
COUPDAYS184クーポン期間全体(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 と一致します。どちらの表現が使いやすいか用途に合わせて選んでください。

関連する財務関数との全体像

債券タイプ価格関数利回り関数経過日数関数
定期利払い債(クーポン付)PRICEYIELDCOUPDAYBS / COUPDAYS / COUPDAYSNC
割引証券(TB・CP)PRICEDISCYIELDDISC(該当なし)
満期一括利払い債PRICEMATYIELDMAT(該当なし)

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関数もあわせて確認してみてください。債券財務関数の体系的な理解が深まりますよ。

タイトルとURLをコピーしました