#NAME?エラーが出たときの確認ポイント

数式を入力した瞬間に#NAME?と表示されて、値がまったく返ってこない。参照しているセルも合っているし、データもきちんと入っている。そんなときに疑うべきは「Excelが数式の中の名前を理解できていない」ことです。結論から言うと、#NAME?エラーは関数名のつづり間違いや引用符の付け忘れなど、書き方そのもののミスが原因です。この記事では、#NAME?が出たときに上から順に見ていくべき確認ポイントと、複数セルにまたがって出てしまったときの一括修正のやり方まで解説します。

目次

#NAME?エラーの意味とほかのエラーとの違い

#NAME?(Name=名前)エラーは、Excelが数式の中に書かれた文字列を関数名としても、名前の定義としても、セル参照としても認識できなかったときに表示されます。ポイントは、データではなく数式そのものに問題があるという点です。

たとえば検索した値が見つからない#N/Aエラーや、0で割ってしまった#DIV/0!エラーは、数式は正しく書けていてデータ側の状態が原因でした。#NAME?はその逆で、データを1件も見に行く前の段階でつまずいている状態です。そのため、データをいくら直しても解決しません。直すべきは数式バーの中身です。

#NAME?エラーが出たときの確認ポイント5つ

次のような点数表(A1:B5)を例に見ていきます。A列が氏名、B列が点数です。

A(氏名) B(点数)
2 佐藤 82
3 鈴木 68
4 田中 91
5 高橋 55

1. 関数名のつづりが間違っていないか

もっとも多い原因がこれです。A列が氏名、B列が点数の表から、鈴木さんの点数を取り出す数式を書くとします。

=VLOOKUP("鈴木",$A$2:$B$5,2,FALSE)

この式は鈴木さんの点数68を返します。ところが「VLOOKUP」を「VLOKUP」と打ち間違えると、Excelはそんな名前の関数を知らないため#NAME?になります。見分け方は簡単で、正しく入力できた関数名は確定した瞬間に自動で大文字に変換されます。小文字のまま残っていたら、その関数名は認識されていないサインです。

2. 文字列をダブルクォーテーションで囲み忘れていないか

A列が氏名、B列が点数の表で、70点以上なら「合格」と表示する数式です。

=IF(B2>=70,"合格","不合格")

B2(佐藤さんの82点)は70以上なので「合格」が返ります。ここで引用符を付け忘れて=IF(B2>=70,合格,不合格)と書くと、Excelは「合格」という名前が定義されたセル範囲を探しに行き、見つからないため#NAME?になります。文字列を数式の中に直接書くときは必ず半角のダブルクォーテーションで囲みます。

3. 範囲指定のコロンが抜けていないか

B列(点数)の合計を求める数式です。

=SUM(B2:B5)

82+68+91+55で296が返ります。ここでコロンを打ち忘れて=SUM(B2B5)と書くと、「B2B5」という名前を探しに行って#NAME?になります。なお、コロンの代わりに半角スペースを入れて=SUM(B2 B5)とした場合は#NAME?ではなく#NULL!という別のエラーになります。詳しくは#NULL!エラーが出る理由と直し方で解説しています。

4. 定義していない名前を参照していないか

Excelにはセル範囲に名前を付けられる機能があります。B2:B5に「点数」という名前を付けておけば=SUM(点数)と書けますが、名前を付ける前にこの数式を書いたり、あとから名前を削除したりすると#NAME?になります。「数式」タブ>「名前の管理」で、使っている名前が実際に定義されているかを確認しましょう。別のブックからシートをコピーしてきたときに、名前だけが付いてこなくて起こるパターンもあります。

5. 新しいバージョン専用の関数を古いExcelで開いていないか

XLOOKUPやTEXTJOINのように比較的新しい関数は、対応していないバージョンのExcelで開くと#NAME?になります。この場合、数式バーには=_xlfn.XLOOKUP(...)のように_xlfn.という見慣れない接頭辞が付いて表示されるのが特徴です。これが見えたら、バージョン非対応が原因だと判断できます。

対処は、そのバージョンでも使える書き方に置き換えることです。XLOOKUPで複数条件に一致するデータを検索する方法で紹介している検索はVLOOKUPやINDEXとMATCHを組み合わせて柔軟に検索する方法でも実現できます。ファイルを共有する相手のExcelバージョンが分からない場合は、最初から古い関数で書いておくのが無難です。

複数のセルに出た#NAME?をまとめて直す方法

同じ数式を下方向にコピーしていた場合、#NAME?も列全体に並びます。1つずつ直すのは非効率なので、「検索と置換」(Ctrl+H)で数式ごと一括置換するのが早いです。検索する文字列に「VLOKUP」、置換後の文字列に「VLOOKUP」と入れ、オプションの「検索対象」を「数式」にして実行します。

また、どのセルにどの種類のエラーが出ているかを機械的に判定したい場合は、ERROR.TYPE関数が使えます。戻り値とエラーの対応は次のとおりです。

ERROR.TYPEの戻り値 エラーの種類
1 #NULL!
2 #DIV/0!
3 #VALUE!
4 #REF!
5 #NAME?
6 #NUM!
7 #N/A

#NAME?は5です。=ERROR.TYPE(D2)のように書けば、D2のエラーが#NAME?なのか別の種類なのかを数値で判別できます。条件付き書式と組み合わせると、エラーの種類ごとに色分けすることもできます。

よくあるエラー・注意点

  • IFERRORで隠してはいけないエラーの代表格: #NAME?は数式の書き間違いなので、VLOOKUPとIFERRORを組み合わせてエラー表示を防ぐ方法のようにIFERRORで包んで空欄にしてしまうと、間違った数式が残ったまま気付けなくなります。まず数式を直すのが先です。
  • 全角スペースや全角の記号が混ざっている: 数式の中に全角スペースが1つ入っているだけで名前として認識されません。ほかのファイルから数式をコピーしてきたときに起こりがちです。
  • 関数名は合っているのに直らない場合はアドインを疑う: アドインで追加された関数を使ったファイルを、アドインが入っていない環境で開くと#NAME?になります。標準関数かどうかを確認しましょう。
  • オートコンプリートを活用すると防げる: 「=VL」まで打つと候補が出るので、そこからTabキーで確定すればつづり間違いは起こりません。手打ちを減らすのが一番の予防策です。
  • 名前の定義は同じ文字でも別物になることがある: 「点数」と「点 数」のように空白が入っていると別の名前として扱われます。「名前の管理」で表記を目視確認しましょう。

まとめ

#NAME?エラーはデータではなく数式の書き方が原因で、関数名のつづり・引用符の付け忘れ・コロン抜け・未定義の名前・バージョン非対応の5点を上から順に確認すれば、ほとんどの場合そこで見つかります。関数名が大文字に変換されるか、_xlfn.が付いていないかを見るだけでも切り分けが進みます。数値として無理な計算をしたときに出る#NUM!エラーの原因と対処法や、参照演算子を間違えたときの#NULL!エラーが出る理由と直し方もあわせてご覧ください。

目次