Menu

Excelの#NAME?エラーの原因と、それぞれの直し方

#NAME?は、数式の中にExcelが認識できない単語があるという意味です。=SUMM(B2:B6)のような関数名の打ち間違い、引用符のない文字列、範囲のコロンの抜け、定義されていない名前、使っているExcelにない関数が原因です。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

#NAME?は、数式の中にExcelが認識できない単語があるという意味です。最も多いのは関数名の打ち間違いで、=SUM(B2:B6)のつもりで=SUMM(B2:B6)と書いている場合です。ほかには、引用符のない文字列、コロンのない範囲、定義されていない名前、使っているExcelのバージョンにない関数が原因になります。

綴りを間違えた関数名
D2
ABCDE
1ProductPriceTotalLookup
2Apple1.2#NAME?#NAME?
3Pear1.5
4Plum0.8
5Bread2.4
6Milk1.1
#NAME? 数式の中に Excel が知らない名前があります。関数のつづりを確認してください。

D2をクリックしてSUMMをSUMに直すと、合計(7)が表示されます。次にE2のVLOKUPをVLOOKUPに直すと、Pearの価格1.5が返ります。

Excelで打ち間違いを手早く見つける方法があります。関数名を小文字で入力します。Enterを押すと、Excelは知っている名前を大文字に変えます(=sum(b2:b6)は=SUM(B2:B6)になります)。小文字のまま残った名前は、Excelが知らない名前です。入力中に表示される一覧から関数を選べば(Tabキーで挿入します)、打ち間違いのほとんどを防げます。

IFの数式の#NAME?: 引用符のない文字列

数式の中の文字列は、まっすぐな半角のダブルクォーテーションで囲む必要があります。囲まないと、ExcelはPassを何かの名前として読み、見つけられません。

文字列には引用符が必要
C2
ABCD
1StudentScoreWithout quotesWith quotes
2Ana72#NAME?Pass
3Ben45Fail
4Cy88Pass
5Dee50Pass
#NAME? 数式の中に Excel が知らない名前があります。関数のつづりを確認してください。

C2は#NAME?を表示します。D2は引用符を付けた同じ数式で、どの生徒でも動きます。文字列の条件にも同じ規則が当てはまります。=COUNTIF(A2:A6,North)は#NAME?ですが、=COUNTIF(A2:A6,"North")は数えます。数値、セル参照、TRUE/FALSEには引用符を付けません(IF関数を参照)。

曲がった引用符も同じエラーの原因になります。Webページ、メール、Wordからコピーした数式には、"Pass"の代わりに“Pass”が入っていることがよくあります。Excelは曲がった引用符を引用符として扱いません:

=IF(B2>=50,“Pass”,“Fail”)    #NAME?
=IF(B2>=50,"Pass","Fail")    Pass

曲がった引用符をそれぞれ削除して、Excelで入力し直してください。

コロンのない範囲

B2B6は範囲ではなく単語なので、ExcelはB2B6という名前を探します。

2つのセルの間のコロン
D2
ABCD
1MonthSalesTotal
2Jan120#NAME?
3Feb95
4Mar140
5Apr110
#NAME? 数式の中に Excel が知らない名前があります。関数のつづりを確認してください。

D2をクリックしてコロンを足し、数式を=SUM(B2:B5)にすると、465が返ります。

定義されていない名前

数式ではセルの代わりにTaxRateのような名前を使えますが、それはその名前が存在してからの話です。作られていない、削除された、綴りが違う、のどれかだと、数式は#NAME?を返します。

未定義の名前とセル参照
C2
ABCDEF
1ItemPriceWith a nameWith a cellTax rate
2Desk240#NAME?28820%
3Chair85102
4Lamp4048
#NAME? 数式の中に Excel が知らない名前があります。関数のつづりを確認してください。

C2はこのブックに存在しないTaxRateを参照しています。D2は代わりにF2を指しているので動き、机は288になります。$によって、数式を下にコピーしてもF2が固定されます。

Excelで名前を作るには、F2を選択して名前ボックス(A列の上、数式バーの左にある欄)にTaxRateと入力してEnterを押すか、数式 > 名前の定義を使います。数式 > 名前の管理には、ブックのすべての名前と、それが指す場所、セルが削除されて#REF!を指している名前が表示されます。名前には適用範囲もあります。Sheet1だけに定義した名前は、Sheet2では#NAME?になります。

使っているExcelには新しすぎる関数

Excelは、持っていない関数にはすべて#NAME?を表示します。ファイルは問題なく開きますが、新しい関数を使う数式はすべて失敗します。Excel 2019以前では、数式バーでそうした関数に_xlfn.という接頭辞が付きます:

=_xlfn.XLOOKUP(E2,A2:A6,B2:B6)      #NAME? in Excel 2019
=INDEX(B2:B6,MATCH(E2,A2:A6,0))     works in every version
関数必要なバージョン
IFS、SWITCH、MAXIFS、MINIFS、CONCAT、TEXTJOINExcel 2019以降
XLOOKUP、XMATCH、FILTER、UNIQUE、SORT、SORTBY、SEQUENCE、LETExcel 2021かMicrosoft 365
TEXTSPLIT、TEXTBEFORE、TEXTAFTER、VSTACK、HSTACK、TAKE、DROPExcel 2024かMicrosoft 365
REGEXTEST、REGEXEXTRACT、GROUPBY、PIVOTBYMicrosoft 365のみ

ファイルを開く人が古いExcelを使っているなら、古い関数だけを使うか、結果を値として送ります(コピーしてからホーム > 貼り付け > 値)。Excel for the webには最新の関数があります。Googleスプレッドシートはそのほとんどを同じ名前で知っています。アドインの関数(ユーロ通貨ツールのEUROCONVERTや社内のアドイン)も、アドインが有効でないと#NAME?になります。ファイル > オプション > アドイン(Macではツール > Excelアドイン)で有効にします。

#NAME?になるCOUNTIFを直す

Northの注文を数える
E2
ABCDE
1OrderRegionAmountNorth orders
21001North250
31002South120
41003East310
51004North90
61005North140
71006West75
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: 数式=COUNTIF(B2:B7,North)は、Northに引用符がないので#NAME?を返します。E2に、Northの注文を数える動く数式を書いてください。

数える文字列がセルにあるなら、そのセルを参照して引用符を外します。G1にNorthがあれば=COUNTIF(B2:B7,G1)です。参照には引用符が要らず、G1が変わっても数式は動き続けます。

よくある質問

Excelの#NAME?はどういう意味ですか?

Excelが、関数でも定義された名前でもセル参照でもない単語を数式の中に見つけたという意味です。よくある原因は、関数名の打ち間違い(=SUMM(B2:B6))、引用符のない文字列(=IF(B2>50,Pass,Fail))、インストールされているExcelのバージョンにない関数です。

ExcelでXLOOKUPが#NAME?になるのはなぜですか?

XLOOKUPにはExcel 2021かMicrosoft 365が必要です。Excel 2019以前はXLOOKUPを知らないので#NAME?を表示し、数式を=_xlfn.XLOOKUP(...)と表示します。そこでは代わりに=INDEX(C2:C6,MATCH(E2,A2:A6,0))を使います。

数式が正しいのに#NAME?になるのはなぜですか?

Webページやワープロからコピーした引用符がないか確かめてください。“Pass”のような全角や曲がった引用符はExcelでは文字列の区切りではないので、その間の単語が名前として読まれます。Excelでまっすぐな半角の引用符"Pass"を入力し直します。

ブックの中の#NAME?エラーをすべて探すには?

Ctrl+G(MacではControl+G)を押してセル選択をクリックし、数式を選んでエラー値だけにチェックを残し、OKをクリックします。Excelはアクティブなシートでエラーのある数式のセルをすべて選択するので、シートごとに繰り返します。数式 > 名前の管理 > フィルター > エラーのある名前で、もう使えなくなった定義済みの名前が一覧になります。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める