ExcelのCOUPNUM関数の使い方|受渡日と満期日の間の利払回数

スポンサーリンク

ExcelのCOUPNUM関数の使い方|受渡日と満期日の間の利払回数

債券を購入したとき、「満期までに利息を何回受け取れるのか」を確認したい場面がありますよね。利払い回数がわかれば、総受取額のシミュレーションや資金計画の精度が上がります。

ExcelのCOUPNUM関数を使えば、受渡日と満期日の間に発生する利払い回数を引数4つで一発で計算できます。COUPNCD関数が「次の利払日はいつか(日付)」を返すのに対し、COUPNUM は「残り何回受け取れるか(整数)」を返す関数です。

この記事では、COUPNUM関数の構文・実例・他のCOUP系関数との関係を整理します。実務での活用方法やエラー対処までまとめて解説しますよ。

ExcelのCOUPNUM関数とは?

ExcelのCOUPNUM関数(読み方:クーポン・ナンバー)は財務関数の一つです。受渡日(settlement)から満期日(maturity)までに支払われる利払いの回数を整数で返します

関数名は「COUPon NUMber」の略です。「クーポンの回数」をそのまま意味する関数名です。債券を満期前に購入するとき、保有期間中に何回利息を受け取れるかを把握できます。

COUPNUM関数が必要な場面

  • 債券の残り利払い回数を一発で算出したいとき
  • 「クーポン額 × 残り回数」で総受取額をシミュレーションしたいとき
  • 利払いスケジュール表(COUPNCDと組み合わせ)を自動生成したいとき
  • 複数銘柄の債券ポートフォリオを管理したいとき

COUPNUM関数で扱える債券

定期的にクーポンを支払う利付債が対象です。

  • 利付国債(10年債・5年債など)
  • 利付社債
  • 地方債
  • 半年払い債券・四半期払い債券

割引証券(TB・CP)はクーポンが存在しないため対象外です。満期一括利払い債はYIELDMAT関数PRICEMAT関数を使ってください。

COUPNUM関数の構文と引数

COUPNUM関数の構文は次のとおりです。

=COUPNUM(settlement, maturity, frequency, [basis])

引数は4つで、basisのみ省略可能です。COUP系関数(COUPNCDCOUPDAYSNCCOUPDAYSCOUPDAYBS)と全く同じ引数構成です。

引数必須/省略意味
settlement必須受渡日(証券の購入が完了する日)
maturity必須満期日(償還日)。settlementより後の日付
frequency必須年間利払回数(1=年1回・2=半年1回・4=四半期1回)
basis省略可日数計算基準(0〜4の整数。既定は0)

COUPNUM関数の戻り値について

COUPNUM関数は必ず正の整数を返します。COUPNCDのように「日付のシリアル値」になることはなく、セルの書式変更も不要です。「6」と表示されたら、保有期間中に6回クーポンを受け取れるという意味になります。

戻り値の起点は「受渡日」ではなく「次回利払日(COUPNCDの戻り値)」である点に注意してください。受渡日当日は利息を受け取らず、次の利払日から数え始める仕様です。

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 が市場慣行です。COUPNUM の場合は basis の違いで戻り値が大きく変わることはほぼありません。それでもシリーズ全体の整合性のため、指定はそろえておきましょう。

COUPNUM関数の基本的な使い方

実例で動きを確認しましょう。

例1: 半年払い国債(標準ケース)

10年物国債(半年払い)を受渡日に購入した場面です。

  • 受渡日: 2026/5/7
  • 満期日: 2030/11/7
  • frequency: 2(半年払い)
  • basis: 1(Actual/Actual)
=COUPNUM(DATE(2026,5,7), DATE(2030,11,7), 2, 1)

結果は 9 が返ります。利払日は2026/11/7・2027/5/7・2027/11/7・2028/5/7・2028/11/7・2029/5/7・2029/11/7・2030/5/7・2030/11/7の9回で、手動で数えても一致します。

例2: 年1回払い社債

  • 受渡日: 2026/5/7
  • 満期日: 2029/9/15
  • frequency: 1(年1回払い)
  • basis: 1
=COUPNUM(DATE(2026,5,7), DATE(2029,9,15), 1, 1)

結果は 4 です。利払日は2026/9/15・2027/9/15・2028/9/15・2029/9/15の4回になります。満期日の月日(9月15日)が毎年の利払日です。

例3: 四半期払い債券

  • 受渡日: 2026/5/7
  • 満期日: 2028/3/15
  • frequency: 4(四半期払い)
  • basis: 1
=COUPNUM(DATE(2026,5,7), DATE(2028,3,15), 4, 1)

結果は 8 です。四半期払いの場合、満期日の月(3月)から3か月ごとの周期(3月・6月・9月・12月)になります。利払日は2026/6/15・2026/9/15・2026/12/15・2027/3/15・2027/6/15・2027/9/15・2027/12/15・2028/3/15の8回です。

例4: 受渡日が利払日と一致するケース

受渡日と満期日の月日が同じ場合の挙動を確認しておきましょう。

  • 受渡日: 2026/5/7
  • 満期日: 2030/5/7
  • frequency: 2(半年払い)
  • basis: 1
=COUPNUM(DATE(2026,5,7), DATE(2030,5,7), 2, 1)

結果は 8 です。受渡日(5/7)にも利払日が立ちますが、その日は数えません。受渡日の「次」から起算するルールに従っているわけです。利払日は2026/11/7・2027/5/7・2027/11/7・2028/5/7・2028/11/7・2029/5/7・2029/11/7・2030/5/7の8回になります。

引数をセル参照にする書き方

複数銘柄を扱う場合は、引数をセル参照にしておくと便利です。

セル内容
B2受渡日2026/5/7
B3満期日2030/11/7
B4frequency2
B5basis1

数式は =COUPNUM(B2, B3, B4, B5) です。受渡日や満期日を変更すれば、残りの利払い回数も自動で再計算されます。

COUPNUM の戻り値の意味(次回利払日から起算する点)

COUPNUM の戻り値で読者がつまずきやすいのが「いつから数えているか」です。ここを押さえておくと、他のCOUP系関数との合わせ技がスムーズになります。

起点は「次回利払日」

COUPNUM は、受渡日(settlement)以降に発生する利払いの回数を返します。受渡日当日に利払日があっても、その日付は受け取り対象に含まれません。

半年払い国債(受渡日2026/5/7・満期日2030/11/7・frequency=2)で確認します。

=COUPNCD(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → 2026/11/7(次回利払日)
=COUPNUM(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → 9

最初に受け取る利払日が2026/11/7(COUPNCD の戻り値)で、そこから満期日2030/11/7までに9回受け取れる、という関係になります。

戻り値が必ず整数になる理由

COUPNUM は「回数」を扱う関数なので、結果は必ず正の整数になります。1.5回や0.5回の利払いは存在しないからです。途中の端数は出ず、最後のクーポンは満期日に支払われる前提で計算されます。

COUPNUM = 0 にはならない

settlement < maturity が成立している限り、COUPNUM の戻り値は1以上の正の整数になります。0 が返ったように見える場合は、引数のミス(settlement ≧ maturity など)を疑ってください。

COUPNUM・COUPNCD・COUPDAYSNC の関係

COUP系関数は「日付」「日数」「回数」のどれを返すかで使い分けます。

戻り値の対比表

関数戻り値の種類単位起点
COUPPCD直前の利払日日付settlement より前
COUPDAYBS直前利払日〜settlement日数過去側
COUPDAYSクーポン期間全体日数期間
COUPDAYSNCsettlement〜次の利払日日数未来側
COUPNCD次の利払日日付settlement より後
COUPNUM残りクーポン回数整数次のクーポン以降

COUPNUM × 他関数の組み合わせ

COUPNUM は単体でも便利ですが、他のCOUP系関数と組み合わせるとさらに実用的になります。

  • COUPNUM × クーポン額/回 = 残り総受取額:満期までに受け取る利息の合計を一発で算出
  • COUPNCD + frequency 月数 ×(COUPNUM − 1)= 利払日リスト:すべての利払日を機械的に列挙
  • COUPDAYSNC + COUPDAYS ×(COUPNUM − 1)≒ 受渡日〜満期日の概算日数:保有期間の目安に

具体例で確認する

半年払い国債(受渡日2026/5/7・満期日2030/11/7・frequency=2・basis=1)で確認します。

=COUPNCD(DATE(2026,5,7), DATE(2030,11,7), 2, 1)    → 2026/11/7
=COUPNUM(DATE(2026,5,7), DATE(2030,11,7), 2, 1)    → 9
=COUPDAYSNC(DATE(2026,5,7), DATE(2030,11,7), 2, 1) → 184

「次の利払日は2026/11/7(184日後)で、そこから満期までに合計9回受け取れる」と読み取れます。

実務での活用例

利払いスケジュール一覧の作成

複数銘柄の債券を保有しているなら、COUPNUM と COUPNCD を組み合わせると一覧表を自動生成できます。

銘柄受渡日満期日freq残り回数次回利払日
国債A2026/5/72030/11/72=COUPNUM(B2,C2,D2,1) → 9=COUPNCD(B2,C2,D2,1) → 2026/11/7
社債B2026/3/152029/9/151=COUPNUM(B3,C3,D3,3) → 4=COUPNCD(B3,C3,D3,3) → 2026/9/15
地方債C2026/4/12028/3/154=COUPNUM(B4,C4,D4,3) → 8=COUPNCD(B4,C4,D4,3) → 2026/6/15

このシートに「クーポン利率」と「額面」の列を加えれば、銘柄ごとの利息収入予測まで一気に作れますよ。

残りクーポン総受取額のシミュレーション

額面1,000万円・年率1.5%・半年払い・残り回数9回の国債を保有しているケースです。

1回あたりクーポン額  = 10,000,000 × 1.5% ÷ 2 = 75,000円
=COUPNUM(B2, C2, D2, 1)                   → 9
残り総受取額         = 75,000 × 9         = 675,000円

数式を1か所まとめると次のようになります。

=10000000 * 0.015 / 2 * COUPNUM(DATE(2026,5,7), DATE(2030,11,7), 2, 1)
→ 675,000

複数銘柄を保有しているなら、銘柄ごとに同じ式を組み立てて合計することで、ポートフォリオ全体の利息収入予測ができます。

法人の余資運用シート

経理・財務部で社債を運用している場合、受渡日・満期日・額面・クーポン利率の4列だけ入力すれば、残り受取総額が自動表示される管理シートが作れます。COUPNUM を使うと「あと何回利息が入るか」が機械的にわかるので、決算月や資金繰り計画とも連動させやすくなります。

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

債券タイプごとに使う関数を整理しておくと、迷わずに済みます。

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

クーポン付債のスケジュール管理は COUPNCD で日付、COUPNUM で回数、COUPDAYSNCで日数を取り出せます。3つを使い分ければ、ほぼあらゆる利払い計算がカバーできますよ。

よくあるエラーと対処法

#NUM! エラー

原因対処法
settlement ≧ maturity受渡日が満期日より前になるよう修正
frequency が 1・2・4 以外1、2、4 のいずれかを指定(3 や 12 は不可)
basis が 0〜4 以外0〜4の整数を指定
引数に負の値日付・整数の正の値で指定

#VALUE! エラー

settlement や maturity が日付として認識されていないことが原因です。文字列の日付(”2026-05-07″ など)はそのまま渡せません。

誤: =COUPNUM("2026-05-07", "2030-11-07", 2, 1)
正: =COUPNUM(DATE(2026,5,7), DATE(2030,11,7), 2, 1)

DATE関数(年・月・日を整数で指定して日付値を返す関数)で渡すか、日付として整形済みのセル参照を渡してください。

#NAME? エラー

「COUPNUM」のスペルミスが原因です。「COUPONNUM」「COUP_NUM」のような表記は存在しません。Excel の入力候補(IntelliSense)から選ぶと安全です。

戻り値が想定と違うとき

  • frequency の指定ミス(半年払いなのに 1 を入れている等)→ 利払頻度を再確認
  • basis の指定が市場慣行と違う → 国債は basis=1、国内社債は basis=3 が標準
  • 受渡日の月日と満期日の月日が一致するケースで「1回少ない」と感じる → 受渡日の利払いはカウントしない仕様(例4で解説)

まとめ

ExcelのCOUPNUM関数は、受渡日と満期日の間に発生するクーポンの回数を返す財務関数です。本記事のポイントを振り返ります。

  • 構文: =COUPNUM(settlement, maturity, frequency, [basis])
  • 戻り値: 残りクーポン回数(必ず正の整数)→ 書式変更不要でそのまま使える
  • 起点: 受渡日ではなく「次回利払日(COUPNCDの戻り値)」から数える
  • 対象: 利付国債・利付社債・地方債など定期的にクーポンを支払う債券
  • frequency: 1(年1回)・2(半年)・4(四半期)のみ有効
  • basis: basis=1(国債/Actual/Actual)、basis=3(国内社債/Actual/365)が市場慣行
  • 実務活用: 「クーポン額 × COUPNUM」で残り受取総額を一発算出

同シリーズのCOUPNCD関数COUPDAYSNC関数COUPDAYS関数COUPDAYBS関数YIELD関数PRICEMAT関数YIELDMAT関数もあわせて確認してみてください。COUP系関数を体系的に身につければ、債券管理シートの自動化がぐっと楽になりますよ。

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