「TB(短期国債)やCP(コマーシャルペーパー)を割引価格で買ったら、満期にいくら受け取れるんだろう?」と思ったことはありませんか。割引証券は額面より低い価格で購入し、満期に額面を一括で受け取る仕組みの商品です。投資額と割引率はわかっていても、手元に戻る金額を正確に計算するのは意外と面倒ですよね。
ExcelのRECEIVED関数を使えば、投資額・割引率・期間から満期受取金額を数式1つで算出できます。割引債・ゼロクーポン債・割引手形のシミュレーションでよく使う関数です。YIELDDISCやDISC関数とは「逆方向」の計算を担当します。
この記事では、RECEIVED関数の構文・実例・YIELDDISCとの双方向検算・DISC・INTRATEとの使い分け・エラー対処までを丁寧に解説します。
ExcelのRECEIVED関数とは?
RECEIVED関数は、全額投資型の割引証券について、投資額・割引率・期間から満期受取金額を返すExcelの財務関数です。「全額投資型」とは、購入時に全額を支払い、途中で利息を受け取らず、満期日に元本+利益分を一括受取する金融商品のことです。
対象となるのは、定期的なクーポン(利息)がなく額面より低い価格で発行・売買される証券です。代表的なものは次の通りです。
- 短期国債(TB:Treasury Bill)
- CP(コマーシャルペーパー)
- 割引手形・銀行引受手形(BA)
- 割引債(ゼロクーポン債)の短期商品
定期的な利払いを受け取る普通の利付債は対象外です。利付債の価格や利回りにはPRICE関数やYIELD関数を使います。利息なし・割引発行ならRECEIVED関数の出番です。
計算の仕組み
RECEIVED関数の内部計算式は次の通りです。
RECEIVED = investment / (1 − discount × DSM / B)
- investment: 投資額(実際に支払った金額)
- discount: 割引率(年率)
- DSM: settlement(受渡日)からmaturity(満期日)までの日数
- B: 基準日数(basis設定による年の日数)
「投資額を割り引かれた値段だと考えて、額面に戻したらいくらになるか」を逆算したものが戻り値です。
RECEIVED関数の構文と引数
RECEIVED関数の基本構文は次の通りです。引数は5つで、最後のbasisのみ省略可能です。
=RECEIVED(settlement, maturity, investment, discount, [basis])
各引数の意味を表で整理します。
| 引数 | 必須 | 意味 |
|---|---|---|
| settlement | 必須 | 受渡日(証券を購入する日) |
| maturity | 必須 | 満期日(償還日) |
| investment | 必須 | 投資額(購入時に支払った金額) |
| discount | 必須 | 割引率(年率を小数で指定) |
| basis | 省略可 | 日数計算方法(0〜4) |
settlement と maturity の関係
settlementは実際に代金を払って証券を受け取る日(受渡日)です。約定日(取引が成立した日)とは別物なので注意してください。maturityはsettlementより後の日付でなければ#NUM!エラーになります。
investment(投資額)について
investmentは「購入時に実際に支払った金額」を入力します。100万円分の割引債を95万円で購入したなら、investmentは950000です。額面ではなく、実際の支出額を入れるのがポイントです。
discount(割引率)の指定単位
割引率は 小数表記 で入力します。年率5%なら 0.05、3.2%なら 0.032 です。セルにパーセント書式で「5%」と入力したものを参照する場合、内部的に0.05として扱われるためそのままセル参照でOKです。
手打ちで 5 と入れてしまうと500%扱いになり、計算結果が極端な値になります。よくあるミスなので気をつけてくださいね。
basis引数の選び方
日数の数え方を指定します。実務では次のように選んでください。
| 値 | 名称 | 主な用途 |
|---|---|---|
| 0(既定) | US (NASD) 30/360 | 米国社債のデフォルト |
| 1 | Actual/Actual | 米国財務省証券 |
| 2 | Actual/360 | 米国TB・CD・CP(マネーマーケット商品) |
| 3 | Actual/365 | 日本国内の短期金融商品 |
| 4 | European 30/360 | 欧州社債 |
TBやCPなどの米国短期金融商品ではbasis=2(Actual/360)が慣行です。日本国内のCP等ではbasis=3(Actual/365)を使うケースが多いですよ。
RECEIVED関数の基本的な使い方
実際にRECEIVED関数を使ってみましょう。
例1: 1年もの割引債の満期受取金額を計算する
- 受渡日: 2026/5/6
- 満期日: 2027/5/6
- 投資額: 950,000円
- 割引率: 5%
- basis = 1(Actual/Actual)
セルへの入力例は次のとおりです。
=RECEIVED(DATE(2026,5,6), DATE(2027,5,6), 950000, 0.05, 1)
内部計算で確認すると次の通りです。
RECEIVED = 950000 / (1 − 0.05 × 365 / 365)
= 950000 / 0.95
= 1,000,000
結果は 1,000,000円 が返ります。95万円で購入し、1年後に満期を迎えると100万円で償還されるケースの満期受取額です。
例2: 90日もの短期国債(TB)の受取額
- 受渡日: 2026/5/6
- 満期日: 2026/8/4(90日後)
- 投資額: 985,000円
- 割引率: 6%
- basis = 2(Actual/360)
=RECEIVED(DATE(2026,5,6), DATE(2026,8,4), 985000, 0.06, 2)
結果は 約1,000,000円 です。米国TBではbasis=2(Actual/360)を使うのが慣行ですよ。
引数をセル参照にする書き方
実務では各パラメータをセルに入力してセル参照で計算するのが便利です。
| セル | 内容 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/5/6 |
| B3 | 満期日 | 2027/5/6 |
| B4 | 投資額 | 950000 |
| B5 | 割引率 | 5% |
| B6 | basis | 1 |
数式: =RECEIVED(B2, B3, B4, B5, B6)
割引率(B5)や投資額(B4)を変えると満期受取額が即座に更新されるため、複数案を比較しながら投資判断できますよ。
実務での使い方|複数パターン比較
RECEIVED関数は条件を変えてシミュレーションすると効果を発揮します。
割引率別の受取額を一覧で出す
投資額100万円・期間1年の条件で、割引率を1%刻みで比較してみましょう。
| セル | 内容 | 値 |
|---|---|---|
| B2 | 受渡日 | 2026/5/6 |
| B3 | 満期日 | 2027/5/6 |
| B4 | 投資額 | 1,000,000 |
| A7:A11 | 割引率 | 1%, 2%, 3%, 4%, 5% |
セルB7に次の数式を入れて、B11までコピーします。
=RECEIVED($B$2, $B$3, $B$4, A7, 1)
| 割引率 | 満期受取額(概算) |
|---|---|
| 1% | 1,010,101円 |
| 2% | 1,020,408円 |
| 3% | 1,030,928円 |
| 4% | 1,041,667円 |
| 5% | 1,052,632円 |
割引率が高いほど受取額が増える関係が一目でわかりますね。
定期預金との比較シミュレーション
「300万円を1年・年1.5%の定期預金に預ける」と「同期間・割引率1.5%の割引債に投資する」のどちらが有利かを比較してみましょう。
定期預金の元利合計(単利):
=3000000 * (1 + 0.015)
→ 3,045,000円
割引債(RECEIVED関数):
=RECEIVED(DATE(2026,5,6), DATE(2027,5,6), 3000000, 0.015, 1)
→ 約3,045,685円
同じ「1.5%」でも、割引債のほうがわずかに受取額が大きくなります。これはRECEIVED関数が投資額を分母にして逆算するため、単純な単利計算より有利な結果が出るためです。
商業手形の額面を逆算する
額面不明の商業手形を495万円で割引してもらい、60日後に満期が来るケース。
=RECEIVED(DATE(2026,5,6), DATE(2026,7,5), 4950000, 0.06, 2)
→ 約5,000,000円
割引前の額面(手形面額)を逆算する用途でも便利に使えますよ。
YIELDDISC・DISCとの双方向検算
RECEIVED関数はYIELDDISC関数やDISC関数と組み合わせると、計算の整合性を確認できます。
RECEIVED → DISC の検算
RECEIVED関数で求めた満期受取額をDISC関数に入れると、元の割引率が逆算できます。
=RECEIVED(DATE(2026,5,6), DATE(2027,5,6), 950000, 0.05, 1)
→ 1,000,000
=DISC(DATE(2026,5,6), DATE(2027,5,6), 950000, 1000000, 1)
→ 0.05(=5.0%)
入力した割引率と一致しました。RECEIVEDとDISCは「割引率⇄満期受取額」を相互に検算できる関係です。
RECEIVED → YIELDDISC の検算
YIELDDISC関数に同じデータを渡すと、投資利回り(年率)が出ます。これは割引率とは少し違う値になります。
=YIELDDISC(DATE(2026,5,6), DATE(2027,5,6), 95, 100, 1)
→ 約0.0526(=5.26%)
RECEIVED関数のdiscount引数(5%)とYIELDDISC関数の戻り値(5.26%)が異なるのは、計算基準の違いのためです。詳しくは次のセクションで整理します。
DISC・INTRATEとの使い分け
割引証券に関係する財務関数は複数あります。「何をわかっていて、何を知りたいか」で使い分けます。
| 関数 | 計算するもの | 必要な入力 | 戻り値の単位 |
|---|---|---|---|
| RECEIVED | 満期受取金額 | 投資額・割引率 | 金額 |
| DISC | 割引率(額面基準の年率) | 投資額・満期受取額 | 比率 |
| INTRATE | 投資利回り(投資額基準の年率) | 投資額・満期受取額 | 比率 |
| YIELDDISC | 投資利回り(投資額基準・100単位) | 価格・償還価額 | 比率 |
判断フロー
- 満期に受け取る金額を知りたい → RECEIVED関数
- 割引率(額面に対する割引の年率)を知りたい → DISC関数
- 投資利回り(実質利回り)を知りたい → INTRATE関数 or YIELDDISC関数
同じ条件で比較する
95万円購入→100万円満期(2026/5/6〜2027/5/6、basis=1)の場合、各関数は次の値を返します。
| 関数 | 数式 | 結果 |
|---|---|---|
| RECEIVED | =RECEIVED(DATE(2026,5,6),DATE(2027,5,6),950000,0.05,1) | 1,000,000円 |
| DISC | =DISC(DATE(2026,5,6),DATE(2027,5,6),950000,1000000,1) | 5.00%(割引率) |
| INTRATE | =INTRATE(DATE(2026,5,6),DATE(2027,5,6),950000,1000000,1) | 約5.26%(投資利回り) |
DISC関数の5%は「100万円(額面)に対する割引額5万円の年率」です。INTRATE関数の5.26%は「95万円(投資額)に対する利益5万円の年率」で、こちらが実質利回りに近い値ですよ。
PRICEMAT・YIELDMATとの違い
RECEIVED関数と似た「満期受取系」の関数としてPRICEMAT関数やYIELDMAT関数がありますが、対象証券が異なります。
| 関数 | 対象証券 | 利息の形態 |
|---|---|---|
| RECEIVED | 割引証券(TB・CP・割引手形) | 利息なし、額面割れで発行 |
| PRICEMAT | 満期利払い証券 | 満期に元本+全利息を一括 |
| YIELDMAT | 満期利払い証券 | 満期に元本+全利息を一括 |
満期利払い証券は、発行時にクーポンレートが決まっており満期に利息と元本を合算して支払うタイプです。RECEIVED関数の対象である割引証券は、そもそもクーポンレートがなく単に額面割れで発行されている点が違いですよ。
よくあるエラーと対処法
#NUM! エラー
次のいずれかが原因です。
| 原因 | 対処法 |
|---|---|
| settlement ≧ maturity | maturityを後ろの日付に修正 |
| investment ≦ 0 | 投資額は正の値を指定 |
| discount ≦ 0 | 割引率は正の値を指定(0%や負は計算不可) |
| discount × DSM / B ≧ 1 | 期間×割引率の積が1を超える極端な値を見直す |
| basis が 0〜4 以外 | 整数0〜4を指定 |
割引率が極端に大きい、または期間が極端に長い場合、内部計算式の分母(1 − discount × DSM / B)が0以下になって#NUM!エラーになります。相場観から外れた入力ミスがないか確認してくださいね。
#VALUE! エラー
settlementやmaturityが日付として認識されていないことが原因です。
誤: =RECEIVED("2026-05-06", "2027-05-06", 950000, 0.05, 1)
正: =RECEIVED(DATE(2026,5,6), DATE(2027,5,6), 950000, 0.05, 1)
文字列ではなくDATE関数で日付を指定しましょう。割引率を "5%" のようにダブルクオート付きで渡してもエラーになるので、セル参照か 0.05 のような小数で指定してください。
#NAME? エラー
関数名のスペルミスが原因です。「RECIEVED」「RECEIPT」などは存在しない関数名なので、入力候補(オートコンプリート)から選ぶようにしましょう。
結果が想定より極端に大きい・小さいとき
結果が桁違いに大きい場合、割引率を 5 と入力して500%扱いになっている可能性が高いです。5%なら 0.05、パーセント書式のセルを参照するか、小数で直接入力してください。
また、basis引数の選択ミスで結果がずれる場合があります。米国TB/CPはbasis=2(Actual/360)が慣行なので、basis=0や1を使っていないか確認しましょう。
まとめ
ExcelのRECEIVED関数は、割引証券(利息なし・額面割れで発行される証券)の満期受取金額を投資額と割引率から計算する財務関数です。本記事のポイントを振り返ります。
- 対象: TB・CP・割引手形・ゼロクーポン債など「利息なし・額面割れ発行」の証券
- 構文:
=RECEIVED(settlement, maturity, investment, discount, [basis]) - 割引率は小数で指定: 5%なら
0.05。5と入れると500%扱いで結果が異常になる - basis: TBやCPはbasis=2(Actual/360)、日本国内短期金融商品はbasis=3が慣行
- YIELDDISC・DISCと逆方向の関係: RECEIVEDは「投資額+割引率→受取額」、DISCは「投資額+受取額→割引率」を計算
- 投資利回りを知りたいときはINTRATEかYIELDDISC: DISC関数の割引率と投資利回りは別の値
満期受取金額が求まったら、同シリーズのYIELDDISC関数・PRICEMAT関数・YIELDMAT関数・PRICEDISC関数もあわせて確認して、割引証券・満期利払い証券の関数使い分けを体系的に身につけてみてくださいね。
