Excelのファイルをスプレッドシートで開くと#NAME?エラーになる原因と直し方【関数の対応表つき】

Excelから開いたスプレッドシートで#NAME?エラーが出るのはなぜ?ざっくりと3行で
  • Googleスプレッドシートで#NAME?エラーが出るのは、Excelの新しいバージョン専用の関数がそのまま数式に残っているのが原因だ。
  • このミスは知らなかった型が中心で、Excelから乗り換えた直後の経理や総務でよく起きる、ツールの対応関数を知らないまま数式を持ち込んでしまうパターンだ。
  • 直すには、エラーが出ているセルの数式を確認し、Googleスプレッドシートに対応した関数へ書き換えればいい。
Excelで作った数式をGoogleスプレッドシートで開くと#NAME?エラーになる経緯を4コマ漫画で解説
①Excelから引き継いだ数式が並ぶセルが#NAME?だらけになり慌てる。②その関数はExcelの新しいバージョン専用だとデプロイ太郎が教える。③スプレッドシート対応の関数に書き換えるとエラーが消えて数字が戻る。④Excel専用の新機能には注意が必要だと二人で確認し合う。

今回の4コマ漫画は、Excelで作った集計表をGoogleスプレッドシートに移した直後に起きる典型的なトラブルを描いています。Excelでは正常に動いていた数式が、開いた瞬間に#NAME?エラーだらけになり、担当者が青ざめる場面から始まります。原因は入力ミスではなく、Excelの新しいバージョン専用の関数が使われていたことでした。

厄介なのは、Excel側では何の問題も起きないため、作成した本人が異変に気づきにくい点です。共有先が別のツールで開いて初めて発覚するケースが多く、発見が遅れるほど資料の修正に手間がかかります。

解決の糸口は、エラーが出ている数式を洗い出し、スプレッドシートが対応する関数に置き換えることです。デプロイ太郎が示したとおり、原因さえわかれば直し方はそれほど難しくありません。ツールをまたぐ機会が増えた今、関数の互換性を意識しておくと、こうしたやり直しを防げます。

Excelから開いたスプレッドシートで#NAME?エラーが出るミスの基本情報

Excelから引き継いだファイルをGoogleスプレッドシートで開いたときに出る#NAME?エラーは、数式が使っている関数や名前をスプレッドシート側が認識できないときに表示されます。

項目内容
症状数式が入っていたセルが#NAME?エラーになり、計算結果が表示されない
よくある場面Excelで作った集計表や請求書ファイルをGoogleドライブにアップロードし、スプレッドシートとして開いたとき
ミスの型知らなかった型(ツールごとの関数対応の違いを知らなかった)が中心。まれに関数名のうっかりミスも混ざる
主な原因Excel専用の新しい関数やアドイン関数、VBAで作った独自関数がスプレッドシートに存在しないため
解決の目安エラーが出ている数式を確認し対応する関数に置き換える。1つのセルなら数分、ファイル全体でも数十分程度

なぜExcelでは動いていた数式が、Googleスプレッドシートを開くと#NAME?になるのか?

Excelファイルをスプレッドシート形式に変換せず、Googleドライブ上でそのまま編集した場合でも結果は変わらない。数式を計算しているのはGoogleスプレッドシート側のエンジンのため、変換の有無に関係なく非対応の関数は同じように#NAME?エラーになる。

Googleスプレッドシートの#NAME?エラーは、関数名のスペルミスだけが原因ではありません。Excelから引き継いだファイルの場合、ツールごとの対応関数の違いが主な原因になっているケースが目立ちます。ここでは実務でよくある3つの原因パターンを、遭遇しやすい順に確認していきます。

Excel for Microsoft 365限定の新しい関数がそのまま残っている

Excel(Microsoft 365)で数年以内に追加された関数を使った数式は、Googleスプレッドシートに引き継いだ瞬間にエラーになりやすいパターンです。TEXTBEFORE関数やTEXTAFTER関数(指定した文字の前後の文字列を取り出す関数)は代表例です。

Google スプレッドシート(ブラウザ版)のセルB2
=TEXTBEFORE(A2,"@")
← Excel(Microsoft 365)専用の関数のため、スプレッドシートは関数名を認識できず#NAME?になる

この関数はExcel(Microsoft 365)またはExcel 2024でしか使えないため、買い切り版のExcel 2019やExcel 2021で開いても同じように動きません。スプレッドシートで同じ処理をするには、正規表現(文字列のパターンを指定して検索・抽出する仕組み)を使った関数に置き換える必要があります。

Google スプレッドシート(ブラウザ版)のセルB2を修正
=REGEXEXTRACT(A2,"(.*)@")
← @より前の文字列を抽出する、スプレッドシート対応の関数に置き換えたことで正しく表示される

分析用のアドイン関数がスプレッドシートに存在しない

情報システム部門やマーケティング担当が作ったファイルでは、Excelの分析用関数を使って外部データを取り込んでいることがあります。WEBSERVICE関数(Web上のデータを取得する関数)やFILTERXML関数(XML形式のデータから値を抜き出す関数)は、Googleスプレッドシートには用意されていません。

Excel(Microsoft 365)のセルC5で作成した数式
=FILTERXML(WEBSERVICE("https://example.com/data.xml"),"//price")
← WEBSERVICE関数とFILTERXML関数はどちらもスプレッドシート非対応のため、両方とも#NAME?になる

この場合はスプレッドシート側に用意されている専用の取り込み関数に丸ごと置き換えるのが近道です。似た処理をする関数の名前が違うだけなので、置き換え作業自体は難しくありません。

Google スプレッドシート(ブラウザ版)のセルC5を修正
=IMPORTXML("https://example.com/data.xml","//price")
← スプレッドシート専用のIMPORTXML関数に置き換えたことでXMLデータを取り込めるようになった

VBAで作った独自関数(マクロ)がそのまま数式に残っている

過去の担当者がExcel(マクロ有効ブック、拡張子.xlsm)でVBA(Excel専用のプログラミング機能)を使って独自の関数を作り、それを数式内で呼び出しているケースもあります。GoogleスプレッドシートのマクロはGoogle Apps Scriptという別の仕組みで動くため、Excelで作ったVBAの関数はそのままでは認識されません。

Excel(マクロ有効ブック)のセルD10に入力されていた数式
=経費精算(A10,B10)
← 経費精算はVBAで作ったユーザー定義関数のため、Googleスプレッドシートには存在せず#NAME?になる

この関数を使い続けたい場合は、同じ処理をGoogle Apps Scriptで作り直す必要があります。作り直しが難しければ、関数を使わずにSUMやIFなど標準の関数の組み合わせに置き換える方法もあります。

Google スプレッドシートでApps Scriptに作り直した後のセルD10
=経費精算_GAS(A10,B10)
← 同じ処理をApps Scriptのカスタム関数として再現したことで、スプレッドシート上でも数式が使えるようになった
ITKAGYO運営者デプロイ太郎のアイコン画像

【デプロイ太郎のコメント】Excelの新しい関数は便利なんですが、うっかりそのまま持ち込んでしまうと今回のようなことになりがちです。ヘルプデスクでもよく相談を受けるパターンですよ。

Excel専用関数によるエラーはツールやバージョンによっても症状が変わる?

Excel専用の関数が原因で起きる#NAME?エラーは、同じ数式でも開くツールやバージョンによって結果が変わることがあります。ここではWeb検索と公式ヘルプで確認できた範囲の挙動を整理しました。

ツール・環境症状・表示のされ方
Excel(Microsoft 365 / Excel 2024)TEXTBEFORE関数やTEXTAFTER関数を含む数式が正常に計算される
Excel(2019・2021などの買い切り版)Microsoft 365限定の関数は同じく認識されず、#NAME?エラーになる
Googleスプレッドシート(ブラウザ版)TEXTBEFORE関数・TEXTAFTER関数・WEBSERVICE関数・FILTERXML関数のいずれも認識されず#NAME?エラーになる

経理や総務の実務では、このミスはどんな場面で起きやすい?

経理業務での請求書番号処理

経理担当がExcel(Microsoft 365)で請求書番号から必要な部分だけを抜き出す数式を作り、そのままGoogleドライブ上の共有フォルダにアップロードするケースです。作成時は正しく動いていたため、担当者自身は不具合に気づかないまま共有してしまいます。

Excel(Microsoft 365)で作成した数式(セルE2)
=TEXTAFTER(E1,"-")
← 請求書番号「INV-2026-0731」からハイフン以降を抜き出す数式。Excelでは正しく動作する

Googleスプレッドシートで開いた後のセルE2を修正
=REGEXEXTRACT(E1,"-(.*)")
← スプレッドシート対応の関数に置き換えることで同じ結果が得られる
共有前に一度Googleスプレッドシートでも開いて数式の結果を確認しておくと、送信後の慌てた修正を防げる。

総務・人事が引き継いだ集計マクロ付きファイル

総務や人事の部署では、前任者が作ったマクロ付きの集計ファイル(拡張子.xlsm)を、確認や引き継ぎのためにGoogleスプレッドシートで開き直すことがあります。マクロで作った独自の関数を使った数式が残っていると、開いた時点で#NAME?エラーが並びます。

Excel(マクロ有効ブック)から引き継いだセルF3
=有休残日数(F1,F2)
← VBAのユーザー定義関数を使った数式。Excelでは正しく計算されている

Googleスプレッドシートで開いた直後のセルF3
=有休残日数(F1,F2)
← VBAの関数はスプレッドシートに存在しないため、修正せずに開くと#NAME?のままになる
マクロ付きファイルを引き継いだら、まずマクロが使われているかどうかを確認するくせをつけておきたい。

一部のセルだけ#NAME?になる場合や、原因が関数以外にある場合はどうする?

一部のセルだけ#NAME?になり、他のセルは正常な場合

ファイル全体ではなく、一部のセルだけ#NAME?になっている場合は、その部分だけ作成者や作成時期が異なっている可能性があります。Googleスプレッドシートの検索機能(Ctrl+F)で#NAME?を検索すると、該当するセルをまとめて洗い出せます。

検索ボックスでの検索キーワード
#NAME?
← このキーワードで検索すると、エラーが出ているセルの位置を一覧で確認できる

関数名を直したはずなのに#NAME?のままの場合

数式内の関数名自体は正しいのに、参照している別の名前(名前付き範囲など)が原因になっているケースもあります。関数の前後にある名前や引数を1つずつ確認し、意図した対象を指しているかどうかをチェックすると原因が見つかりやすくなります。

Googleスプレッドシートでのチェック方法
数式バーに表示された数式全体を選択してコピーし、別のセルに一度貼り付けて内容を確認する
← 見た目ではわかりにくい余分な文字や誤字がないかを確認する方法

#NAME?エラーが出たら何をどの順で確認すればいい?

#NAME?エラーを見つけたら、闇雲に数式を書き直す前に、原因を順番に絞り込んでいくと修正が早く終わります。特にExcelから引き継いだファイルでは、次の順番で確認するのがおすすめです。

  1. エラーが出ているセルをクリックし、数式バーで使われている関数名を確認する
  2. その関数名をGoogleスプレッドシートの関数リスト(ヘルプメニュー内)で検索し、対応しているか確認する
  3. 対応していない場合は、同じ処理ができるスプレッドシート用の関数を調べて置き換える
  4. 置き換え後、Enterキーで確定し、エラーが解消したかを確認する
  5. 同じ関数を使った数式が他のセルにもないか、Ctrl+Fで#NAME?を検索して洗い出す
ITKAGYO運営者デプロイ太郎のアイコン画像

【デプロイ太郎のコメント】焦って全部の数式を作り直す前に、まずは同じ関数がどれだけ使われているか数え上げてみてください。原因を1つに絞れると作業がぐっと早くなりますよ。

なぜGoogleスプレッドシートはExcelの関数を全部そろえていないのか?

Excelの関数がGoogleスプレッドシートで#NAME?エラーになる背景には、両者の設計思想の違いがあります。Googleスプレッドシートは、Excelとの互換性を意識しながらも、独自の計算エンジンとブラウザ上で動く仕組みを採用しています。そのため、Excelが新しい機能を追加しても、Googleスプレッドシート側で同じ関数が使えるようになるまでには時間差が生まれます。実際、XLOOKUP関数やIFS関数、TEXTJOIN関数のように、かつては対応していなかった関数が後から追加された例もあります。逆に、WEBSERVICE関数やFILTERXML関数、CUBEVALUE関数のように、Excel特有のアドイン機能に近い関数は、今のところGoogleスプレッドシートに用意されていません。関数の対応状況は今後も変わっていく可能性があるため、頻繁に使う関数については定期的に最新の対応状況を確認しておくと安心です。

ITKAGYO運営者デプロイ太郎のアイコン画像

【デプロイ太郎のコメント】関数の対応状況は日々アップデートされています。ここで紹介した内容も今後変わる可能性があるので、迷ったときは公式ヘルプで確認する習慣をつけておきましょう!

よくある質問

Q
急いでいるときにすぐできる応急処置はありますか?
A

急いでいる場合は、正しく計算できているExcel側の数値をコピーし、Googleスプレッドシート側に値だけ貼り付ける方法が最速です。値のみ貼り付け(Ctrl+Shift+V)を使えば、数式を直さなくてもその場の数字は正しく表示できます。ただしこれは一時しのぎのため、後で数式自体も直しておく必要があります。

Q
スマートフォンのGoogleスプレッドシートアプリで開いても同じようにエラーになりますか?
A

はい、パソコンのブラウザ版と同じ計算エンジンで数式を処理しているため、スマートフォンアプリで開いた場合も同じように#NAME?エラーが表示されます。ただしスマートフォンの画面では数式バーが確認しにくいため、原因調査はパソコンで行うほうが効率的です。

Q
ExcelとGoogleスプレッドシートで、対応している関数の違いはどこで確認できますか?
A

Googleスプレッドシートの関数一覧は、Googleドキュメントエディタヘルプの公式ページで確認できます。TEXTBEFORE関数やTEXTAFTER関数、WEBSERVICE関数などExcel特有の関数は掲載されていないため、リストにない関数を見つけたら他の関数への置き換えを検討しましょう。

Q
すでに関係者に共有・提出したファイルで#NAME?エラーに気づいた場合はどうすればいいですか?
A

まず影響を受けているセルの範囲を確認し、ファイルの所有者やチームに早めに連絡することが先決です。修正後は、どのセルの数式をどう直したのかを一言添えて共有すると、相手側での二重確認の手間を減らせます。

Q
#NAME?エラーと#REF!エラーの違いは何ですか?
A

#NAME?エラーは関数名や名前をスプレッドシートが認識できないときに表示されるのに対し、#REF!エラーは数式が参照していたセルや範囲が削除されるなどして無効になったときに表示されます。原因が関数そのものにあるか、参照先の欠落にあるかという点が大きな違いです。

この記事と一緒に知っておきたいミス・便利ツール

関連ミス・ツール この記事との関連
スプレッドシートを共有したのに「アクセス権が必要です」で開けない原因と直し方【共有設定とログインを確認】 同じくExcelからの引き継ぎ・共有時にGoogleスプレッドシートで起きるトラブルのため
上書き保存で前のデータが消えた時の戻し方|原因と復元手順【OneDriveとPC内で違う】 Excelファイルの取り扱いで起きる別のうっかりミスのため
Microsoft Excelとは? Excelの基本的な機能や特徴を先に確認できる
Google Sheetsとは? Googleスプレッドシートの基本的な機能や特徴を先に確認できる

【出典】参考URL

https://support.microsoft.com/ja-jp/excel/how-to-correct-a-name-error:Excelにおける#NAME?エラーの原因と修正方法(公式ヘルプ)
https://support.microsoft.com/en-us/office/textbefore-function-d099c28a-dba8-448e-ac6c-f086d0fa1b29:TEXTBEFORE関数が利用できるExcelのバージョン(公式ヘルプ)
https://support.google.com/docs/table/25273?hl=ja:Googleスプレッドシートの関数リスト(公式ヘルプ)
https://support.google.com/drive/answer/9406611?hl=ja:GoogleドライブでExcelなどのOfficeファイルを直接編集する方法とGoogleスプレッドシートに変換して編集する方法の違い(公式ヘルプ)
https://support.google.com/docs/answer/7665004?hl=ja:Googleスプレッドシートのマクロ(Apps Script)の仕組み(公式ヘルプ)

コメント

デプロイ太郎のSNSを見てみる!!