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系関数(COUPNCD・COUPDAYSNC・COUPDAYS・COUPDAYBS)と全く同じ引数構成です。
| 引数 | 必須/省略 | 意味 |
|---|---|---|
| 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) | 米国社債 |
| 1 | Actual/Actual | 米国国債(実日数計算) |
| 2 | Actual/360 | 米国マネーマーケット |
| 3 | Actual/365 | 日本国内債券 |
| 4 | European 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 |
| B4 | frequency | 2 |
| B5 | basis | 1 |
数式は =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 | クーポン期間全体 | 日数 | 期間 |
| COUPDAYSNC | settlement〜次の利払日 | 日数 | 未来側 |
| 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 | 残り回数 | 次回利払日 |
|---|---|---|---|---|---|
| 国債A | 2026/5/7 | 2030/11/7 | 2 | =COUPNUM(B2,C2,D2,1) → 9 | =COUPNCD(B2,C2,D2,1) → 2026/11/7 |
| 社債B | 2026/3/15 | 2029/9/15 | 1 | =COUPNUM(B3,C3,D3,3) → 4 | =COUPNCD(B3,C3,D3,3) → 2026/9/15 |
| 地方債C | 2026/4/1 | 2028/3/15 | 4 | =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 を使うと「あと何回利息が入るか」が機械的にわかるので、決算月や資金繰り計画とも連動させやすくなります。
関連する財務関数の全体像
債券タイプごとに使う関数を整理しておくと、迷わずに済みます。
| 債券タイプ | 価格関数 | 利回り関数 | 利払日関数 |
|---|---|---|---|
| 定期利払い債(クーポン付) | PRICE | YIELD | COUPPCD / COUPNCD / COUPNUM |
| 割引証券(TB・CP) | PRICEDISC | YIELDDISC | (該当なし) |
| 満期一括利払い債 | PRICEMAT | YIELDMAT | (該当なし) |
クーポン付債のスケジュール管理は 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系関数を体系的に身につければ、債券管理シートの自動化がぐっと楽になりますよ。
