ExcelのPRICEDISC関数は、割引証券の価格を額面100あたりで計算する財務関数です。短期国債(TB)やCP、銀行引受手形のように、利払いがなく額面より低い価格で発行される証券が対象です。割引率と残存日数を渡すと、現在価格を自動で算出してくれますよ。
短期資金運用や検算業務で「割引率3%・残存90日のCPはいくらで買えるのか?」を即座に求めたいとき、PRICEDISC関数を覚えておくと電卓を叩く手間が省けますよ。この記事では、構文と引数の意味から実務シーンでの活用例、関連関数との違いまで具体的なサンプルで解説していきます。
ExcelのPRICEDISC関数とは?割引証券の価格を求める財務関数
ExcelのPRICEDISC関数は、利払いを行わない「割引証券」の価格を計算する関数です。英語ではDiscounted Securityと呼びます。割引証券とは、額面より低い価格で発行され、満期に額面で償還される金融商品を指します。発行価格と償還価格の差額が、実質的な利息に相当します。
代表的な割引証券は次のとおりです。
| 証券種別 | 発行体 | 期間の目安 |
|---|---|---|
| 短期国債(T-Bill / TB) | 各国財務省 | 3ヶ月・6ヶ月・1年 |
| コマーシャルペーパー(CP) | 一般事業会社 | 1〜365日 |
| 銀行引受手形(BA) | 銀行 | 30〜180日 |
| 譲渡性預金(短期CD) | 銀行 | 〜1年 |
これらは「利払いがない代わりに割り引いて発行される」という共通点を持っていて、価格計算には専用の式が使われます。PRICEDISC関数はその式をExcel上で再現したものですよ。
定期的な利払いがある社債の価格を計算したい場合は、PRICEDISC関数ではなくPRICE関数を使います。後ほど比較表で違いを整理するので、用途に合った関数を選びましょう。
PRICEDISC関数の構文と引数
PRICEDISC関数の構文は次のとおりです。
=PRICEDISC(settlement, maturity, discount, redemption, [basis])
各引数の意味は次の表で整理しました。
| 引数 | 必須 | 内容 |
|---|---|---|
| settlement | 必須 | 受渡日(証券を買い手が取得する日。発行日より後) |
| maturity | 必須 | 満期日(証券が償還される日) |
| discount | 必須 | 割引率(年率を小数で指定。3%なら0.03) |
| redemption | 必須 | 額面100あたりの償還価額(通常は100) |
| basis | 省略可 | 日数計算方式(0〜4。省略時は0=米国30/360) |
basis引数の選び方
basis引数は「年日数を何日として計算するか」を指定します。割引証券の場合、選択肢は次の5種類です。
| 値 | 日数計算方式 | 主な用途 |
|---|---|---|
| 0(既定) | 米国30/360 | 米国社債一般 |
| 1 | 実日数/実日数 | 米国財務省証券(一般) |
| 2 | 実日数/360 | 米国短期国債・CP・BA(最頻出) |
| 3 | 実日数/365 | 日本の短期国債・単純年率 |
| 4 | 欧州30/360 | 欧州社債一般 |
割引証券ではbasis=2(実日数/360)が世界的なデファクトスタンダードです。日本国内の割引短期国債(TB)は実日数/365が一般的なのでbasis=3を選びます。「2と3で結果が0.01〜0.02ずれる」ことがあるので、計算前に対象市場の慣行を確認しておきましょう。
戻り値
戻り値は「額面100あたりの価格」です。実際の購入金額を求めるときは、戻り値 × 実額面 / 100 で換算します。
PRICEDISC関数の基本的な使い方|短期国債(TB)の価格計算
13週物の米国短期国債を例に、PRICEDISC関数の基本的な使い方を見ていきましょう。次の条件で価格を計算します。
- 受渡日: 2026-01-15
- 満期日: 2026-04-16(残存91日)
- 割引率: 4.20%
- 額面: 100
- basis: 2(実日/360)
サンプルデータと数式
| セル | 項目 | 値 |
|---|---|---|
| A2 | 受渡日 | 2026/1/15 |
| A3 | 満期日 | 2026/4/16 |
| A4 | 割引率 | 4.20% |
| A5 | 額面(償還価額) | 100 |
| A6 | basis | 2 |
入力する数式は次のとおりです。
=PRICEDISC(A2, A3, A4, A5, A6)
結果は 98.9383(額面100あたりの価格)になります。額面1,000万円のTBを購入する場合、実際の購入金額は 10,000,000 × 98.9383 / 100 = 9,893,833円 ですよ。
計算式の中身
PRICEDISC関数は次の式で価格を求めています。
価格 = redemption × (1 − discount × DSM / B)
ここでDSMは受渡日から満期日までの日数、Bはbasisで指定した年日数です。
上の例では 100 × (1 − 0.042 × 91 / 360) = 100 × (1 − 0.010617) = 98.9383 という流れになります。「割引率は満期までの期間で按分される」という割引証券の基本ロジックがそのまま式に表れていますね。
PRICEDISC関数とPRICE関数・PRICEMAT関数の違い
ExcelのPRICE系関数は3種類あります。それぞれ対象とする証券の種類が異なるので、用途別に使い分ける必要があります。
| 関数 | 対象証券 | 利払い | 主要引数 |
|---|---|---|---|
| PRICEDISC | 割引証券(TB・CP・BA) | なし | discount(割引率) |
| PRICE | 定期利払い証券(社債等) | 定期 | rate(クーポン), yld(利回り) |
| PRICEMAT | 満期一括利払い証券 | 満期一括 | rate, yld |
使い分けフロー
迷ったら次の3問で判定しましょう。
- 利払いがない → PRICEDISC
- 利払いがあって、半年や1年ごとなど定期的 → PRICE
- 利払いがあって、満期に一括で支払われる → PRICEMAT
割引証券は利払いがゼロなので、PRICE関数の rate=0 で代用してもうまく動きません。割引方式と利付方式は計算ロジックが根本的に違うため、必ずPRICEDISCを使ってくださいね。PRICE関数の詳しい使い方はExcelのPRICE関数の使い方|定期利払い証券の価格で解説しています。
PRICEDISC関数の実務活用例|CP・銀行引受手形・TB検算
割引証券の実務シーンを3つ取り上げて、PRICEDISC関数で価格を求めてみましょう。
例1: 6ヶ月CPの購入価格
新発のCPを購入するときに、提示された割引率から購入価格を逆算する場面です。
- 受渡日: 2026-04-01
- 満期日: 2026-10-01(残存183日)
- 割引率: 0.50%
- 額面: 100
- basis: 2
=PRICEDISC("2026/4/1", "2026/10/1", 0.005, 100, 2)
結果は 99.7458 です。額面1億円のCPなら 100,000,000 × 99.7458 / 100 = 99,745,833円 で購入できる計算になりますよ。
例2: 銀行引受手形(BA)90日物
仕入先からBAで支払いを受け取る場合、割引率から実額面の現在価値を求める場面です。
- 受渡日: 2026-05-01
- 満期日: 2026-07-30(残存90日)
- 割引率: 0.30%
- 額面: 100
- basis: 2
=PRICEDISC("2026/5/1", "2026/7/30", 0.003, 100, 2)
結果は 99.9250 です。額面100万円なら 1,000,000 × 99.9250 / 100 = 999,250円 の現在価値になります。割引額は750円ですね。
例3: 日本TBの検算(basis=3)
日本の3ヶ月割引短期国債は実日数/365で計算するのが慣行です。次の条件で価格を求めてみましょう。
- 受渡日: 2026-04-01
- 満期日: 2026-07-01(残存91日)
- 割引率: 0.05%
- 額面: 100
- basis: 3
=PRICEDISC("2026/4/1", "2026/7/1", 0.0005, 100, 3)
結果は 99.9875 です。同じ条件でbasis=2にすると 100 × (1 − 0.0005 × 91 / 360) = 99.9874 となり、わずかに違いが出ます。市場慣行に合ったbasisを選ぶことが大切ですよ。
PRICEDISC関数とDISC・YIELDDISC関数の双方向計算
PRICEDISC関数の対になるのが、DISC関数(割引率を返す)とYIELDDISC関数(利回りを返す)です。価格と割引率・利回りを双方向に変換できます。
関数同士の関係
=PRICEDISC(s, m, discount, redemption, basis) → 価格
=DISC(s, m, price, redemption, basis) → 割引率
=YIELDDISC(s, m, price, redemption, basis) → 利回り
双方向計算の例
割引率5%、残存180日、basis=2で価格を求めると次のようになります。
=PRICEDISC("2026/4/1", "2026/9/28", 0.05, 100, 2) → 97.50
逆にこの価格97.50からDISC関数で割引率を求めると、元の5%が返ってきます。
=DISC("2026/4/1", "2026/9/28", 97.50, 100, 2) → 0.05(5%)
YIELDDISC関数で利回りを求めると、結果は約 5.13% になります。
=YIELDDISC("2026/4/1", "2026/9/28", 97.50, 100, 2) → 0.05128(約5.13%)
割引率と利回りの違い
「同じ証券なのに5%と5.13%の2つの値が出てきた」と混乱するかもしれません。これは割引率と利回りの定義が異なるためです。
| 指標 | 計算の分母 | 意味 |
|---|---|---|
| 割引率(discount) | 額面 | 額面に対する割引額の年率 |
| 利回り(yield) | 投資元本 | 元本に対するリターンの年率 |
割引方式の3%は、利回りに換算すると3%より少し大きくなります。実質的な投資収益を比較するときは利回り、市場で提示される金額の計算には割引率を使うのが実務の使い分けですよ。
PRICEDISC関数のよくあるエラーと対処法
PRICEDISC関数が想定どおりに動かないときは、次のエラーパターンを確認しましょう。
#NUM!エラー
| 原因 | 対処法 |
|---|---|
| settlement ≥ maturity(受渡日が満期日以後) | 受渡日 < 満期日になっているか確認 |
| discount ≤ 0(割引率が0以下) | 割引率は正の値で指定する |
| redemption ≤ 0(償還価額が0以下) | 償還価額は正の値で指定する |
| basisが0〜4以外 | basis引数を0〜4の範囲で指定する |
#VALUE!エラー
| 原因 | 対処法 |
|---|---|
| 日付が文字列形式で日付値として解釈されない | DATE関数で日付値を作るか、日付セルを参照する |
| 引数に文字列や論理値が入っている | 数値型を指定する |
計算結果が想定と違うとき
エラーは出ないものの結果が合わない場合、次の3点を疑ってみてください。
- basisの選択ミス: 割引証券は通常
basis=2(実日/360)。0や3を使うと結果がずれます - 割引率の単位: 年率は小数で渡します(5%なら0.05)。整数の5を渡すと500%扱いになり、価格がマイナスになりますよ
- 日付の渡し方: settlement・maturityは日付値(DATE関数またはセル参照)を使います。
"2026/4/1"のような文字列は環境によって解釈が変わるので、なるべく日付セル参照が安全です
まとめ|割引証券の価格計算はExcelのPRICEDISC関数で
ExcelのPRICEDISC関数は、利払いのない割引証券の価格を額面100あたりで求める財務関数です。短期国債・CP・銀行引受手形などの計算で活躍してくれますよ。
要点を3つにまとめておきます。
- 構文:
=PRICEDISC(受渡日, 満期日, 割引率, 償還価額, [basis])。割引証券ではbasis=2(実日/360)が世界標準、日本TBはbasis=3(実日/365) - 計算式:
価格 = 償還価額 × (1 − 割引率 × 残存日数 / 年日数)。割引率は満期までの期間で按分される - 関連関数: 価格→割引率はDISC、価格→利回りはYIELDDISC、利付社債の価格はPRICE、満期一括利付債はPRICEMATを使い分ける
割引証券の価格計算は、実務では「いくらで買えるか」を即座に判断する場面で必須のスキルです。割引率と利回りの違いを意識しながら、PRICEDISC関数を使いこなしてみてくださいね。DISC関数やYIELDDISC関数と組み合わせると、価格・割引率・利回りを自由に往復できますよ。
財務関数の他の使い方は次の関連記事も参考にしてください。
