「発行から満期まで1回だけ利息がつく短期社債を、利回りベースでいくらで買えばいいのか?」と聞かれて、サッと電卓を叩けると経理・財務の現場ではかなり頼りにされますよね。満期に利息をまとめて受け取るタイプの債券では、利率と利回りから理論価格をスプレッドシートのPRICEMAT関数で簡単に計算できますよ。
この記事では、スプレッドシートのPRICEMAT関数の使い方を、構文から実務の活用例・よくあるエラーの対処まで同僚に教える感覚で解説します。PRICE関数・PRICEDISC関数との使い分けも整理しているので、満期利付債・短期社債・割引債の価格チェックに活用してください。
スプレッドシートのPRICEMAT関数とは?
スプレッドシートのPRICEMAT関数は、満期に利息をまとめて受け取るタイプの有価証券について、額面100あたりの価格を計算する財務関数です。
「満期利付債」とは、発行から満期まで期中に利息(クーポン)を支払わず、満期日に元本と利息をまとめて支払うタイプの債券のことですよ。短期社債やCD(譲渡性預金)、一部の短期国債などが該当します。
PRICEMAT関数が返すのは「額面100に対する理論価格」です。利率(年率)と利回り(年率)、それに発行日・受渡日・満期日を入れると、満期にまとめて受け取る利息込みの将来価値を、利回りで現在価値に割り戻した価格が求められますよ。
PRICEMAT関数の構文と引数
PRICEMAT関数の構文は次のとおりです。
=PRICEMAT(受渡日, 満期日, 発行日, 利率, 利回り, [日数計算基準])
英語表記だと =PRICEMAT(settlement, maturity, issue, rate, yield, [basis]) となります。
| 引数 | 省略 | 説明 |
|---|---|---|
| 受渡日(settlement) | 必須 | 証券の購入日(支払い完了日)。DATE関数での指定を推奨 |
| 満期日(maturity) | 必須 | 証券の満期日。受渡日より後の日付を指定する |
| 発行日(issue) | 必須 | 証券の発行日。受渡日と満期日より前の日付を指定する |
| 利率(rate) | 必須 | 発行時に決まる年率クーポン利率(例: 0.05 = 年5%) |
| 利回り(yield) | 必須 | 投資家が求める年率利回り(例: 0.06 = 年6%) |
| 日数計算基準(basis) | 省略可 | 1年の日数計算方式(下表参照、省略時は0) |
日数計算基準(basis)の設定値
| 値 | 1年の日数計算 |
|---|---|
| 0(省略時) | 30日/360日(米国NASD方式) |
| 1 | 実際の日数/実際の日数 |
| 2 | 実際の日数/360日 |
| 3 | 実際の日数/365日 |
| 4 | 30日/360日(ヨーロッパ方式) |
利率(rate)と利回り(yield)の違いに注意してください。利率は発行時に決まる契約上のクーポン利率で、利回りは投資家が現時点で要求する年率リターンです。この2つが一致していれば価格は100付近、利回りが利率より高ければ価格は100より下になりますよ。
PRICEMAT関数の基本的な使い方
シンプルな満期利付債の価格を求める
額面100・年利率5%・発行から満期まで1年・要求利回り6%の満期利付債を、いくらで買えばよいかを求めてみましょう。
| セル | 項目 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/4/21 |
| B3 | 満期日 | 2027/4/21 |
| B4 | 発行日 | 2026/4/21 |
| B5 | 利率 | 0.05 |
| B6 | 利回り | 0.06 |
=PRICEMAT(B2, B3, B4, B5, B6, 1)
結果は 約99.06(額面100に対して99.06) です。利回り6%が利率5%を上回っているので、額面100の証券を99.06で買うと利回り6%が確保できる計算になりますよ。額面1,000万円分なら購入価格は約990万6,000円が目安になります。
直接日付を入れる場合はDATE関数を使います。
=PRICEMAT(DATE(2026,4,21), DATE(2027,4,21), DATE(2026,4,21), 0.05, 0.06, 1)
発行から時間が経った満期利付債を購入する
発行日2026/1/1・満期日2026/12/31の年利率4%の社債を、2026/4/21に利回り5%で購入する場合の価格を計算します。
=PRICEMAT(DATE(2026,4,21), DATE(2026,12,31), DATE(2026,1,1), 0.04, 0.05, 1)
結果は 約99.36 です。発行から受渡日までに3か月強が経過していて、その期間の経過利息も価格に含まれてくるイメージです。中途取得時の理論価格チェックに使えますよ。
CD(譲渡性預金)の価格をシミュレーションする
満期180日・利率2%・要求利回り2.5%のCDを、額面100あたりいくらで買えるか計算します。
=PRICEMAT(DATE(2026,4,21), DATE(2026,10,18), DATE(2026,4,21), 0.02, 0.025, 2)
結果は 約99.75 です。期間が短くて利率と利回りの差も小さいので、価格は100に近い水準になりますよ。CDや短期コマーシャルペーパーの取引価格の妥当性チェックに便利です。
PRICE・PRICEDISCとの使い分け
債券の価格計算系関数には、PRICEMATのほかにPRICE関数とPRICEDISC関数があります。3つの違いは「対象とする債券のタイプ」ですよ。
| 関数 | 対象債券 | 利息の扱い |
|---|---|---|
| PRICEMAT関数 | 満期利付債 | 利息は満期にまとめて受取 |
| PRICE関数 | 定期利付債 | 期中にクーポン受取あり |
| PRICEDISC関数 | 割引債(ゼロクーポン債) | 期中の利息なし、満期に額面受取 |
判断ポイントは「いつ・どのように利息を受け取るか」です。満期一括で利息を受け取るタイプならPRICEMAT関数、半年や年1回など定期的にクーポンを受け取る一般的な社債・利付国債ならPRICE関数、利息ゼロで割引発行ならPRICEDISC関数を使いますよ。
同じ条件での違いを確認する
例えば額面100・受渡日2026/4/21・満期日2027/4/21・利回り3%・basis=1の場合:
| 関数 | 数式 | 結果の意味 |
|---|---|---|
| PRICEMAT関数(発行日同日・利率2%) | =PRICEMAT(DATE(2026,4,21),DATE(2027,4,21),DATE(2026,4,21),0.02,0.03,1) | 約99.04(満期一括利息) |
| PRICE関数(年1回払い・利率2%) | =PRICE(DATE(2026,4,21),DATE(2027,4,21),0.02,0.03,100,1,1) | 約99.03(期中クーポンあり) |
| PRICEDISC関数 | =PRICEDISC(DATE(2026,4,21),DATE(2027,4,21),0.03,100,1) | 約97.00(割引のみ) |
PRICEMAT関数は利息が満期一括なのでPRICE関数と価格が近くなりますが、現金フローの受取タイミングが違うので厳密には別物として扱う点に注意してくださいね。
利率と利回りの関係を整理する
PRICEMAT関数を理解するうえで欠かせないのが、利率(rate)と利回り(yield)の関係です。両者の大小関係で価格の方向感が決まります。
| 関係 | 価格 | 状況 |
|---|---|---|
| 利率 > 利回り | 100より高い(オーバーパー) | 投資家が満足する以上のクーポンが付いている |
| 利率 = 利回り | おおよそ100(パー) | 額面どおりの価格で取引される |
| 利率 < 利回り | 100より低い(アンダーパー) | クーポンが要求利回りに足りない分、価格を割引 |
実務では、市場利回りが上がる局面で既発債の価格は下がり、逆に市場利回りが下がると既発債の価格は上がるという関係を、PRICEMAT関数で数値として確認できますよ。
=PRICEMAT(DATE(2026,4,21), DATE(2027,4,21), DATE(2026,4,21), 0.05, 0.04, 1)
→ 約100.96(利率>利回り、オーバーパー)
=PRICEMAT(DATE(2026,4,21), DATE(2027,4,21), DATE(2026,4,21), 0.05, 0.05, 1)
→ 約100.00(利率=利回り、パー)
=PRICEMAT(DATE(2026,4,21), DATE(2027,4,21), DATE(2026,4,21), 0.05, 0.06, 1)
→ 約99.06(利率<利回り、アンダーパー)
よくあるエラーと対処法
#NUM!エラー
以下のケースで発生します。
| 発生条件 | 対処法 |
|---|---|
| 受渡日 ≥ 満期日 | 受渡日が満期日より前になるよう修正する |
| 発行日 ≥ 受渡日 | 発行日は受渡日より前の日付にする |
| 利率が0未満 | 0以上の数値を指定する |
| 利回りが0以下 | 0より大きい数値を指定する |
| basis が 0〜4 以外 | 0, 1, 2, 3, 4 のいずれかを指定する |
特に発行日・受渡日・満期日の前後関係は 発行日 ≦ 受渡日 < 満期日 がルールです。発行日と受渡日が同日になるケースはOKですが、発行日が受渡日より後だと #NUM! になりますよ。
#VALUE!エラー
引数に数値や日付以外の文字列が入っている場合に発生します。日付を直接書くときは DATE(2026,4,21) のようにDATE関数を使うと確実ですよ。セル参照で日付を渡す場合も、そのセルが「日付型」になっているかを確認してくださいね。
#NAME?エラー
関数名のスペルミスが原因です。「PRICEMATURITY」「PRICE_MAT」などは存在しない関数名です。入力候補から選ぶようにしましょう。
Excelとの互換性
PRICEMAT関数はExcelとGoogleスプレッドシートで同じ計算結果を返します。Excelファイル(.xlsx)をスプレッドシートで開いても関数はそのまま動作しますよ。
スプレッドシートでは引数名が日本語(「受渡日」「満期日」「発行日」「利率」「利回り」「日数計算基準」)で表示されます。Excelの英語表記(settlement、maturity、issue、rate、yield、basis)と見た目は異なりますが、動作に影響はありません。
まとめ
スプレッドシートのPRICEMAT関数は、満期に利息をまとめて受け取るタイプの有価証券について、額面100あたりの価格を計算する財務関数です。ポイントをまとめておきます。
- 引数は受渡日・満期日・発行日・利率・利回りの5つが必須。日数計算基準(basis)は省略可
- 日付の前後関係は 発行日 ≦ 受渡日 < 満期日 がルール
- 利率は契約上のクーポン、利回りは投資家の要求リターン。この大小関係で価格の方向が決まる
- 期中クーポンがある一般的な社債ならPRICE関数、割引発行ならPRICEDISC関数を使い分ける
- 満期受取額の計算にはRECEIVED関数、全額投資型の利率計算にはINTRATE関数も合わせて活用できる
- 日付には DATE関数を使うと文字列とのトラブルを防げる
- Excelとの互換性があり、.xlsxファイルをそのまま開いても動作する
短期社債・CD・コマーシャルペーパーなど満期一括利息の証券の価格チェックや、利率と利回りの差から見る理論価格のシミュレーションにぜひ活用してみてください。財務関数の使い分けには、PRICE関数・PRICEDISC関数・DISC関数・RECEIVED関数・INTRATE関数の記事もあわせて参考にしてみてくださいね。
