「額面100万円の割引債を95万円で購入した」ようなケースで、割引率が年何%に相当するのか、パッと計算できると便利ですよね。短期国債や商業手形の割引率確認にも欠かせない関数です。
この記事では、スプレッドシートのDISC関数の使い方を、構文から実務の活用例・よくあるエラーの対処まで同僚に教える感覚で解説します。INTRATE関数との使い分けもあわせて整理しているので、有価証券・財務シミュレーションで活用してください。
スプレッドシートのDISC関数とは?
スプレッドシートのDISC関数は、割引発行された有価証券について、額面金額に対する割引率を年率で計算する財務関数です。
「割引発行の証券」とは、額面より安い価格で発行され、満期日に額面金額をそのまま受け取るタイプの金融商品です。割引債(ゼロクーポン債)や短期国債、商業手形がこれにあたります。
DISC関数が返すのは「額面に対して何%の割引で発行されたか」を年率換算した数値です。発行体目線や市場レート確認の用途で使われますよ。
DISC関数の構文と引数
DISC関数の構文は次のとおりです。
=DISC(受渡日, 満期日, 現在価格, 満期受取額, [日数計算基準])
英語表記だと =DISC(settlement, maturity, price, redemption, [basis]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 証券の購入日(支払い完了日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 証券の満期日。受渡日より後の日付を指定する |
| 現在価格(price) | 必須 | 証券の購入金額(額面100に対する価格、または実際の購入金額) |
| 満期受取額(redemption) | 必須 | 満期日に受け取る金額(通常は額面金額) |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
日本の慣行に合わせる場合は basis=1(実際の日数ベース)を使うことが多いですよ。現在価格と満期受取額は、額面100を基準にした「95」「100」という形でも、実際の金額「950000」「1000000」という形でもどちらでも計算できます。
DISC関数の基本的な使い方
シンプルな割引債の割引率を求める
額面100万円・購入価格95万円・期間1年の割引債の割引率を求めてみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2027/4/21 |
| B4 | 現在価格 | 950,000 |
| B5 | 満期受取額 | 1,000,000 |
=DISC(B2, B3, B4, B5, 1)
結果は 約0.05(5.00%) です。額面100万円に対して5万円割り引かれているので、割引率は5%という計算になりますよ。
直接日付を入れる場合はDATE関数を使います。
=DISC(DATE(2026,4,21), DATE(2027,4,21), 950000, 1000000, 1)
短期国債の割引率を求める
額面100に対して99.2で購入し、90日後に額面で償還される短期国債の割引率を計算します。
=DISC(DATE(2026,4,1), DATE(2026,6,30), 99.2, 100, 2)
結果は 約0.032(3.20%) です。わずか3か月弱の保有期間でも、年率換算するとこの水準になりますよ。短期国債の入札結果をチェックする用途で便利です。
商業手形の割引率をシミュレーションする
額面500万円の手形を4,950,000円で割り引いた(60日後満期)場合の年率換算割引率を確認してみましょう。
=DISC(DATE(2026,4,21), DATE(2026,6,20), 4950000, 5000000, 2)
結果は 約0.06(6.00%) です。手形の割引料率は短期でも年率換算するとそれなりの水準になるので、資金調達コストを比較するときの目安として使えますよ。
INTRATE関数との使い分け
財務関数の中でDISC関数と混同しやすいのがINTRATE関数です。どちらも割引証券に関係しますが、計算の分母が異なります。
| 比較項目 | DISC関数 | INTRATE関数 |
|---|---|---|
| 計算するもの | 割引率(額面に対する割引額の比率) | 全額投資の利率(投資額に対する増加率) |
| 分母 | 満期受取額(額面) | 投資額(購入価格) |
| 主な用途 | 商業手形・短期国債の割引率確認 | ゼロクーポン債・割引債の収益率計算 |
| 結果の傾向 | INTRATE関数より低い値になる | DISC関数より高い値になる |
判断ポイントは「利率の基準を額面にするか購入価格にするか」です。発行体目線で「額面の何%割引で発行したか」を見るならDISC関数、投資家目線で「いくら出してどれだけ増えたか」を見るならINTRATE関数が適していますよ。
同じ条件で比較する
95万円購入→100万円満期(1年、basis=1)の場合:
| 関数 | 数式 | 結果 |
|---|---|---|
| DISC関数 | =DISC(DATE(2026,4,21),DATE(2027,4,21),950000,1000000,1) | 約5.00% |
| INTRATE関数 | =INTRATE(DATE(2026,4,21),DATE(2027,4,21),950000,1000000,1) | 約5.26% |
DISC関数は額面100万円を分母にするので、投資額95万円を分母にするINTRATE関数より低い値になります。どちらが正しいというわけではなく、視点の違いですよ。
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 現在価格が0以下 | 正の数値を指定する |
| 満期受取額が0以下 | 正の数値を指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
現在価格と満期受取額の大小関係に制約はありませんが、現在価格が満期受取額より大きい場合は負の割引率(プレミアム)が返ります。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。
#NAME?エラー
関数名のスペルミスが原因です。「DISCOUNT」「DISK」などは存在しない関数名です。入力候補から選ぶようにしましょう。
Excelとの互換性
DISC関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作します。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「現在価格」「満期受取額」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、price、redemption、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのDISC関数は、割引発行の有価証券について額面金額に対する割引率を年率で求める財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・現在価格・満期受取額の4つが必須。日数計算基準(basis)は省略可
- 割引率の基準は満期受取額(額面)。投資額基準で計算するINTRATE関数より低い値になる
- 日付には DATE関数を使うと文字列とのトラブルを防げる
- 受渡日 ≥ 満期日の場合は #NUM! エラーになる
- Excelとの互換性があり、.xlsxファイルをそのまま開いても動作する
割引債の割引率確認や、商業手形・短期国債の年率換算にぜひ活用してみてください。財務関数の使い分けには、INTRATE関数やRECEIVED関数の記事もあわせて参考にしてみてくださいね。
