ExcelのRATE関数で#NUM!が出る原因と直し方|pv・pmtの符号と年利換算を解説

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関数を使うたびに符号で迷うなら、シート側の設計を少し工夫するとミスが激減します。おすすめは「入力はすべて正の値で揃え、式の中で符号を付ける」やり方です。

手順:キャッシュフロー表を書いてから式を作る

  1. 取引をあなたの視点で「入金」「出金」に分解する
  2. 開始時点(pv)、毎期(pmt)、満期(fv)に割り振る
  3. 入金を+、出金を−にする(少なくとも一つは逆符号になる)
  4. 支払回数(nper)と支払単位(毎月/毎年など)を揃える
  5. 期末/期首(type)を決める
  6. 必要ならguessを指定してRATEを計算する

具体例:今回の条件をキャッシュフローで表す

タイミングキャッシュフロー(例)Excel引数意味
開始時点+15114pv一括で受け取った(借入など)
1期〜60期−422pmt毎期支払う(返済)
満期0fv完済して残高ゼロ

この表が書ければ、あとはそのまま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!に悩まされることが大幅に減り、ローン比較や実質金利の検証がスムーズになります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次