ExcelのRATE関数で#NUM!が出るときは、式が間違っているよりも「符号(+/−)」や「期間単位」の取り違えが原因であることが多いです。pv=15114、nper=60、pmt=422の例を使い、正しい設定と実務での確認方法をまとめます。
RATE関数の#NUM!は「解が見つからない」サイン
RATE関数は、ローン返済や分割払い、積立・投資などの「一定額を一定期間支払う(受け取る)」取引から、1期間あたりの利率を逆算する関数です。ところが、入力した条件から利率が一意に決まらない(または数学的に解が存在しない)と、結果は#NUM!になります。
特に多いのが、今回のように「pv(現在価値)とpmt(支払額)が同じ符号で入力されている」ケースです。これは入力ミスというより、Excelの金融関数が持つルール(キャッシュフローの向きを符号で表す)を知らないと起きやすい落とし穴です。
まず押さえる:Excel金融関数は符号で「入金/出金」を区別する
Excelの金融関数(RATE、PMT、NPER、FV など)は、キャッシュフローの方向を数値の符号(+/−)で判断します。簡単に言うと、あなたの立場(あなたのお財布)から見て、
- 入ってくるお金(受け取り):プラス(+)
- 出ていくお金(支払い):マイナス(−)
という整理です。ここで重要なのは「絶対にpvは+」「絶対にpmtは−」ではない、という点です。どちらを+にするかは“視点”で変わるため、次の表でイメージを掴むと迷いにくくなります。
| 場面 | あなたから見たpv(開始時) | あなたから見たpmt(毎期) | 例 |
|---|---|---|---|
| 借入(ローンを組む) | +(お金を受け取る) | −(返済で支払う) | 借入金が入金、毎月返済が出金 |
| 投資・積立(資金を出す) | −(お金を支払う) | +(分配・受取がある場合) | 最初に投資して、毎月分配金を受け取る |
| 積立(毎月入金して満期で受取) | 0 または − | −(積立で支払う) | 毎月積立(出金)、満期で受取(fvが+) |
このルールを外して「pvもpmtも両方プラス」のように入力すると、Excelから見ると“入金だけが続く”か“出金だけが続く”かのように見えてしまい、利率を求めるための方程式が成立しません。その結果が#NUM!です。
今回の例:pv=15114、nper=60、pmt=422 で#NUM!になる理由
質問にある条件を、よくある入力のままRATE関数に入れると次の形になります。
=RATE(60, 422, 15114)
この式では、pvもpmtもどちらもプラスになっています。Excelの立場では「開始時点で15114を受け取り、その後も毎期422を受け取る」ように読めてしまうため、利率をどう置いても辻褄が合いません。そこで解が見つからず、#NUM!になります。
一方、想定される実態が「最初に15114を受け取り、その後60回にわたり毎期422を支払う(返済する)」なら、毎期の422は出金なのでマイナスにします。
=RATE(60, -422, 15114)
あるいは、あなたのシート上で「支払額はプラスで入力しておきたい」場合は、現在価値のほうをマイナスにしても構いません(視点を“あなたが15114を支払って、毎期422を受け取る”側に置くイメージです)。
=RATE(60, 422, -15114)
どちらも「入金と出金が混在している」状態になるため、RATE関数は正しく計算できます。重要なのは“少なくともpv・pmt・fvのどれかが逆符号になること”です。
計算結果の目安:この条件だと利率はどのくらい?
上の条件(nper=60、pv=15114、pmt=-422、fv=0、type=0)で計算すると、RATE関数はおおむね次の値になります。
| 項目 | 値(概算) | 補足 |
|---|---|---|
| 1期間あたりの利率 | 約 1.8775% | 支払いが月1回なら「月利」 |
| 年利(名目・単純換算) | 約 22.53% | 月利×12(複利を無視した換算) |
| 年利(実効・複利) | 約 25.01% | (1+月利)^12−1 |
ここで「月利×12」で年利にしてよいかは、目的次第です。契約書の金利表記がAPR(名目年率)なのか、実効年率なのかで揃え方が変わります。後半で換算の考え方も整理します。
RATE関数の引数を整理:何を入れるべきかが一発で分かる表
RATE関数の基本形は次のとおりです。
=RATE(nper, pmt, pv, [fv], [type], [guess])
| 引数 | 意味 | よくある入力 | つまずきポイント |
|---|---|---|---|
| nper | 支払(受取)回数 | 60(60回払い) | 「月数なのに年数で入れる」「回数と期間がズレる」 |
| pmt | 毎期の支払額(一定) | -422(毎期422支払い) | 符号がpvと同じだと#NUM!になりやすい |
| pv | 現在価値(開始時点の金額) | 15114(受取)または -15114(支払) | 視点で符号が変わる。必ずpmtと逆符号を含める |
| fv | 将来価値(満期時の残高) | 0(完済/残高ゼロ) | ローン残債が残るなら0以外。省略時は0扱い |
| type | 支払タイミング | 0(期末)、1(期首) | クレカ分割や一般的なローンは0が多い。家賃・リースなどは1のことも |
| guess | 推定利率(初期値) | 0.1(省略時の既定値) | 収束しないと#NUM!。高金利/低金利/負利率を疑うなら調整 |
質問者が最終的に採用した式も、この引数の並びを意識すると理解しやすくなります。
=RATE(F8, F10, -F7, 0, 0, 0.5) * 12
F8:期間(nper)F10:支払額(pmt)-F7:現在価値(pv)を逆符号にしてキャッシュフローの向きを明示0(fv):満期の残高を0(完済)に指定0(type):期末払い0.5(guess):推定利率を0.5にして収束を補助*12:月利→年利の名目換算(後述)
なお、fvとtypeが既定値でよいなら省略できますが、後から見返したときの意図が分かりやすいため、あえて0を明示するのは実務ではよくある書き方です。
「符号を直したのに#NUM!」のときに疑うべき追加原因
符号が正しくても、次のような条件だとRATEは#NUM!になることがあります。原因ごとにチェック方法をまとめます。
| よくある原因 | 症状 | 確認ポイント | 対処 |
|---|---|---|---|
| 期間単位がズレている | 結果が異常に大きい/小さい、または#NUM! | nperが「月」なのにpmtが「年額」など | 支払頻度に揃える(毎月ならnper=月数、pmt=月額) |
| 数学的に解が存在しない | guessを変えても#NUM! | 0%でも完済できない、または条件が矛盾 | pmt・nper・pv・fvの関係を見直す |
| 収束しない(反復計算が失敗) | 特定のguessでだけ#NUM! | 金利が極端、または負利率の可能性 | guessを複数試す(例:0.01、0.1、0.5、-0.1) |
| 支払タイミング(type)の取り違え | 金利が想定よりズレる | 期首払いか期末払いか | typeを0/1で切り替えて確認 |
| 小数点・桁の入力ミス | 金利が100倍、1000倍になる | 4220のつもりが422、15,114のつもりが15114など | 通貨・カンマ表記、セルの表示形式を確認 |
「解が存在しない」の簡易チェック(0%のときに成立するか)
ローン返済のように「pvを受け取ってpmtで返す」ケースでは、ざっくり言うと金利0%でも返し切れるかを確認すると、矛盾に気付きやすいです。
- 金利0%なら、支払総額は
|pmt| × nper - 完済(fv=0)を前提にするなら、
|pmt| × nperが|pv|より小さすぎると成立しません
もちろん実際は利息が乗るので、0%でギリギリ成立するから必ず解がある、という単純な話ではありません。しかし、明らかな矛盾を弾く一次チェックとしては有効です。
収束しない場合のguessの考え方
RATEは内部的に反復計算で利率を探します。反復計算は初期値(guess)からスタートするため、初期値が実際の利率とかけ離れていると収束しにくく、#NUM!になりやすくなります。
実務では次のように「想定レンジ」に合わせてguessを変えると改善することが多いです。
- ローン金利が数%程度だと思う:
0.01〜0.05 - クレジットや短期融資で高めを疑う:
0.1〜0.5 - 特殊なケースで負利率を疑う:
-0.1など(ただし-1未満は不可)
「guessを変えてもダメ」なら符号や単位の問題が残っている可能性が高い、という切り分けにも使えます。
年利に換算する:×12の意味と、実効年率の出し方
RATEの戻り値は1期間あたりの利率です。毎月支払なら月利、毎週なら週利です。よって「年利」が欲しい場合は、年あたりの期間数で調整する必要があります。
名目年率(単純換算)を出す
最もよく見かけるのが、質問者の式にもある×12です。支払が毎月なら年12回なので、
=RATE(60, -422, 15114) * 12
のようにすると「月利×12=名目年率(APRのような表記)」になります。契約書や広告の年率がこのタイプなら、この換算が揃いやすいです。
実効年率(複利)を出す
一方で、金利が複利で効いていく前提で「1年後にどれだけ増えるか」を表す実効年率が欲しい場合は、
=(1 + RATE(60, -422, 15114))^12 - 1
のように複利換算します。Excel関数なら、名目年率に直してからEFFECT関数で実効化する方法もあります。
=EFFECT(RATE(60, -422, 15114) * 12, 12)
どちらが正しいというより、比較したい相手(契約の表記、社内のルール、レポートの定義)に合わせるのが実務のコツです。
迷わないための「符号決め」手順:シート設計のおすすめ
RATE関数を使うたびに符号で迷うなら、シート側の設計を少し工夫するとミスが激減します。おすすめは「入力はすべて正の値で揃え、式の中で符号を付ける」やり方です。
手順:キャッシュフロー表を書いてから式を作る
- 取引をあなたの視点で「入金」「出金」に分解する
- 開始時点(pv)、毎期(pmt)、満期(fv)に割り振る
- 入金を+、出金を−にする(少なくとも一つは逆符号になる)
- 支払回数(nper)と支払単位(毎月/毎年など)を揃える
- 期末/期首(type)を決める
- 必要ならguessを指定してRATEを計算する
具体例:今回の条件をキャッシュフローで表す
| タイミング | キャッシュフロー(例) | Excel引数 | 意味 |
|---|---|---|---|
| 開始時点 | +15114 | pv | 一括で受け取った(借入など) |
| 1期〜60期 | −422 | pmt | 毎期支払う(返済) |
| 満期 | 0 | fv | 完済して残高ゼロ |
この表が書ければ、あとはそのままRATEに落とすだけです。
検算のすすめ:PMT・FV・NPERで同じ前提を再計算する
RATEで出した利率は、他の金融関数で簡単に検算できます。検算すると「符号がたまたま通っただけ」「年利換算の単位がズレていた」などを早期に発見できます。
例:RATEで出した利率をPMTに戻す
まずRATEで月利を求めます。
=RATE(60, -422, 15114, 0, 0)
次に、その月利を使ってPMTを計算し、元の422に近い値が返るか確認します。
=PMT(RATE(60, -422, 15114, 0, 0), 60, 15114, 0, 0)
符号を揃えている限り、結果は-422前後になります(表示形式が通貨なら端数調整が見やすいです)。
例:残債があるケースはfvで整合性を見る
もし「60回払っても残債が残る」契約なら、fvを0にしないほうが現実に近くなります。残債(将来価値)をfvとして入れ、RATE→FVで同じ残債が出るかを確認します。
=FV(RATE(nper, pmt, pv, fv, type), nper, pmt, pv, type)
このように同じ前提を別の関数で再現できるかを見ると、数式の品質が上がります。
実務でよくある「符号が逆」パターンと対処
RATE関数の符号は視点で変わるため、チーム内やテンプレートの引き継ぎで混乱しがちです。よくあるパターンを先に潰しておきましょう。
パターン:支払額は常にプラスで管理している
家計簿や販売管理の都合で「支払額をマイナスにしたくない」場合は、セルの値はプラスのままにして、式の中でマイナスを付けます。
=RATE(nper, -pmt, pv, 0, 0)
この形にしておくと、入力者は常に正の値を入れるだけで済み、ミスが減ります。
パターン:借入の計算なのにpvをマイナスにしてしまう
借入(受け取り)をあなたの視点で表すならpvはプラスが自然です。ただし、テンプレートが「支払は+、受取は−」のように逆ルールになっていることもあります。どちらでも計算はできますが、テンプレート内で混在させないことが重要です。
おすすめは、シートのどこかに「このファイルは出金をマイナスで統一」などのルールを書いておくことです。関数の仕様というより、運用の問題で#NUM!が再発するケースは珍しくありません。
パターン:手数料や保険料が実は含まれている
分割払いの「実質年率」を出したいのに、pvが商品価格のままだと、RATEで出る金利が契約の年率と合いません。実際には事務手数料や保証料が差し引かれて手取りが小さくなる(=pvが小さくなる)ことがあるためです。
この場合は、pvを「実際に受け取った(手取り)金額」に置き換えて計算すると、契約の実質年率に近づきます。逆に、pvを税込価格のままにしてRATEを回すと、金利が低く見えることがあります。
よくある質問
pvとpmt、どちらをマイナスにするのが正解?
どちらでも構いません。入金と出金が混在するように、少なくとも一つを逆符号にするのが正解です。迷うなら「あなたのお財布から見て出ていくお金をマイナス」に統一すると、他の関数(NPV、IRRなど)とも整合が取りやすくなります。
RATEの結果は年利?月利?
nperとpmtの1期間に対応した利率です。毎月払いなら月利、毎年払いなら年利です。「年利が欲しい」なら、月利×12(名目)や (1+月利)^12−1(実効)のように変換してください。
typeは0と1、どっちを使えばいい?
一般的なローンやクレジット分割は「期末払い(0)」が多いです。一方、家賃、リース、保険料などは「期首払い(1)」の契約もあります。支払がいつ発生するかで金利が変わるので、契約書の支払条件に合わせてください。迷ったら0/1を切り替えて、どちらが契約の数字に合うか確認するのも現実的です。
guessは毎回入れたほうがいい?
通常は省略で問題ありません(省略時は0.1で計算されます)。ただし、#NUM!が出たり、極端な金利が出たりする場合は、guessを入れて収束を助ける価値があります。今回のように0.5を入れて安定させるのは、実務でもよく使われる手です。
まとめ:RATEの#NUM!を最短で解決するチェックリスト
- pv・pmt・fvの符号が「入金と出金」で混在しているか(同符号だと#NUM!になりやすい)
- nperの単位とpmtの単位が揃っているか(毎月なら月数と月額)
- 完済ならfv=0を明示、支払タイミングが期末ならtype=0を明示
- #NUM!が消えない場合はguessを変えて収束を試す(0.01、0.1、0.5など)
- 出した利率はPMT・FVで検算して、前提ズレを早期に潰す
RATE関数は一見「数字を入れるだけ」に見えますが、実際はキャッシュフローの整理が9割です。符号と単位を揃える癖をつけておくと、#NUM!に悩まされることが大幅に減り、ローン比較や実質金利の検証がスムーズになります。

コメント