スプレッドシートのCOUPDAYS関数の使い方|利払い期間の日数

スポンサーリンク

債券の発生利息(経過利息)を計算するとき、「直前の利払日から決済日までの日数」÷「クーポン期間全体の日数」という割り算が必要になります。この分母にあたる「クーポン期間全体の日数」を求めるのがCOUPDAYS関数ですよ。

この記事では、スプレッドシートのCOUPDAYS関数の使い方を、構文・実例・よくあるエラーの対処まで同僚に教える感覚で解説します。COUPDAYBS関数やCOUPDAYSNC関数との使い分けも整理しているので、債券売買の発生利息計算に活用してください。

スプレッドシートのCOUPDAYS関数とは?

スプレッドシートのCOUPDAYS関数は、決済日(受渡日)を含むクーポン期間(利払い期間)全体の日数を返す財務関数です。

関数名のCOUPDAYSは “Coupon Days”(クーポン日数)を略したものです。

債券の発生利息を計算するには、次の式を使います。

発生利息 = 額面 × 年率利率 ÷ 利払い頻度 × (COUPDAYBS ÷ COUPDAYS)

この式の分母が COUPDAYS です。「クーポン期間全体のうち何日分が経過しているか」を表す比率を求めるために使われますよ。

たとえば半年払い(frequency=2)の債券なら、クーポン期間は約180〜184日程度になります。COUPDAYS はこの正確な日数を、日数計算方式(basis)に従って返してくれますよ。

COUPDAYS関数の構文と引数

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

=COUPDAYS(決済日, 満期日, 頻度, [日数計算方法])

英語表記だと =COUPDAYS(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日
430日/360日(ヨーロッパ方式)

basis=0 と basis=4 は両方「30日/360日」ですが、月末日の扱いが異なります。basis=0 は米国NASD方式(30日超の月は30日に丸める)、basis=4 はヨーロッパ方式(31日を30日に統一)ですよ。

COUPDAYS関数の基本的な使い方

半年払い債券のクーポン期間日数を求める

年率5%・半年払い(frequency=2)の国債を、2026/4/22に購入する場合のクーポン期間全体の日数を求めます。満期日は2028/10/22とします。

セル項目
B2決済日2026/4/22
B3満期日2028/10/22
B4頻度2
=COUPDAYS(B2, B3, B4, 1)

結果は 366 です。直前の利払日2025/10/22から次の利払日2026/10/22までの実日数が366日(閏年を含むため)になりますよ。

DATE関数を使って直接指定することもできます。

=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 1)

basis の違いによる計算結果の比較

同じ条件でも basis によって結果が変わります。

=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 0)   → 180(30日/360日)
=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 1)   → 366(実日数)
=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 2)   → 366(実日数/360日)
=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 3)   → 365(実日数/365日)
=COUPDAYS(DATE(2026,4,22), DATE(2028,10,22), 2, 4)   → 180(30日/360日)

半年払いの場合、basis=0 または basis=4 では固定で180日になります。basis=1 では実際のカレンダー日数が使われるため、閏年や月ごとの日数のばらつきが反映されますよ。

年1回払い債券のクーポン期間日数を求める

年1回払い(frequency=1)の社債で決済日が2026/4/22、満期日が2029/9/15の場合です。

=COUPDAYS(DATE(2026,4,22), DATE(2029,9,15), 1, 1)

結果は 365 です。直前の利払日2025/9/15から次の利払日2026/9/15までの365日が返されます(2026年は閏年ではないため)。

発生利息を計算する

上記の半年払い国債(額面100・年率5%)の発生利息を計算します。

=100 * 0.05 / 2 * (COUPDAYBS(DATE(2026,4,22),DATE(2028,10,22),2,1) / COUPDAYS(DATE(2026,4,22),DATE(2028,10,22),2,1))

COUPDAYBS が 183日、COUPDAYS が 366日なので、183÷366 = 0.5。

結果は 約2.50(額面100に対して)です。経過期間がちょうど半分のため、半期クーポンの半分が発生利息になりますよ。

COUPDAYBS・COUPDAYSNCとの使い分け

COUPDAYS関数と同じ「COUP」シリーズの関数を3つ並べて整理します。

関数返す値発生利息計算での役割
COUPDAYBS直前の利払日〜決済日の日数分子(経過日数)
COUPDAYS決済日を含むクーポン期間全体の日数分母(期間全体)
COUPDAYSNC決済日〜次の利払日の日数残存日数の確認

3つの関係式:

COUPDAYBS + COUPDAYSNC = COUPDAYS

「経過した日数」+「残りの日数」=「期間全体」という関係です。

具体例で確認する

決済日2026/4/22、満期日2028/10/22、半年払い(frequency=2)、basis=1 の場合:

=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 と一致しますね。この場合は決済日がクーポン期間のちょうど真ん中にあることがわかりますよ。

よくあるエラーと対処法

#NUM!エラー

以下のケースで発生します。

発生条件対処法
決済日 ≥ 満期日決済日が満期日より前になるよう修正する
頻度が1・2・4以外1、2、4 のいずれかを指定する
basis が 0〜4 以外0, 1, 2, 3, 4 のいずれかを指定する

頻度(frequency)は1・2・4のみ有効です。たとえば月次払い(12)や隔月払い(6)は指定できませんよ。

#VALUE!エラー

引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,22) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡す場合も、そのセルが「日付型」になっているかを確認してくださいね。

#NAME?エラー

関数名のスペルミスが原因です。「COUPONDAYS」「COUP_DAYS」などは存在しない関数名です。入力候補から選ぶようにしましょう。

Excelとの互換性

COUPDAYS関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。

スプレッドシートでは引数名が日本語(「決済日」「満期日」「頻度」「日数計算方法」)で表示されます。Excelの英語表記(settlementmaturityfrequencybasis)と見た目は異なりますが、動作に影響はありません。

まとめ

スプレッドシートのCOUPDAYS関数は、決済日を含むクーポン期間全体の日数を返す財務関数です。ポイントをまとめておきます。

  • 引数は決済日・満期日・頻度の3つが必須。日数計算方法(basis)は省略可
  • 頻度(frequency)は1(年1回)・2(半年払い)・4(四半期払い)のみ有効
  • COUPDAYBS + COUPDAYSNC = COUPDAYS の関係になる
  • 発生利息の計算式では分母として使う
  • basis=0 または 4(30日/360日)では半年払いなら固定で180日、年1回払いなら360日になる
  • basis=1(実日数)では閏年や月の日数が反映される
  • Excelとの互換性があり、.xlsxファイルをそのまま開いても動作する

COUPDAYS関数単独では発生利息は求められません。COUPDAYBS関数と組み合わせて使うのが基本ですよ。クーポン関連の財務関数はCOUPDAYSNC関数COUPNCD関数COUPPCD関数COUPNUM関数と合わせて使うと、債券の利払いスケジュール管理に役立ちますよ。

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