配布されたExcelブックを開いたら、数式が軒並み #NAME? になっていた。あるいは自分で XLOOKUP を入力したのに「使えない」と言われた。受け取ったファイルのセルに _xlfn.XLOOKUP という見慣れない文字列が並んでいる。こうした症状に出くわすと、数式の書き方を間違えたのかと不安になりますよね。
結論から言うと、これらの多くは数式のミスではなく、お使いのExcelのバージョンがその関数に対応していないことが原因です。XLOOKUPやFILTERといった比較的新しい関数は、特定のバージョン以降でしか動きません。古い版で開くと、Excelは「そんな関数は知らない」というサインとして #NAME? を返すのです。
この記事では、どの関数がどのバージョンから使えるのかを一覧表で整理し、_xlfn. という謎の文字列の正体、そして自分の版で使えないときの代替方法までまとめて解説します。読み終わるころには、目の前のエラーが「なぜ起きたのか」「どう回避すればいいのか」がはっきりするはずです。
対応バージョン: XLOOKUP・FILTER・UNIQUE・SORT・SORTBY は Microsoft 365(サブスクリプション版)または Excel 2021 以降が必要です。Excel 2019・2016・2013 では使用できません。TEXTJOIN・IFS・MAXIFS・MINIFS は Excel 2019 以降で使用可能です。
#NAME?が出る原因はバージョン不一致——まず結論
#NAME? エラーには大きく2つの原因があります。1つは関数名のタイプミス(VLOOKUP を VLOOOKUP と打つなど)。もう1つが、今回のテーマである「そのバージョンに存在しない関数を呼び出した」ケースです。
XLOOKUPやFILTERなどの新しい関数は、追加されたバージョンより前のExcelには文字どおり存在しません。存在しない関数を呼び出すと、Excelは名前を解決できず #NAME? を返します。つまり #NAME? は、Excelからの「この関数、うちのバージョンには入ってないよ」という合図なのです。
ここで大切なのは、エラーが出ている本人のExcelが原因とは限らない点です。Microsoft 365を使う同僚がXLOOKUP入りのファイルを作り、それをExcel 2019の人が開くと、開いた側の画面で #NAME? になります。数式そのものは正しくても、開く環境が対応していなければエラーになる、という構図を押さえておきましょう。
タイプミスが原因の #NAME? については、より広い視点で原因を切り分けたい場合にExcelの参照エラー(#REF!・#NAME?・循環参照)の直し方も参考になります。本記事は「バージョン不足による #NAME?」に絞って解説していきます。
関数×バージョン対応表(9関数×5バージョン)
まずは全体像を一枚の表で確認しましょう。代表的な9つの関数を、5つのバージョンで整理しました。○は使用可能、×は非対応(開くと #NAME? になる)を表します。
| 関数 | Microsoft 365 | Excel 2021 | Excel 2019 | Excel 2016 | Excel 2013 |
|---|---|---|---|---|---|
| XLOOKUP | ○ | ○ | × | × | × |
| FILTER | ○ | ○ | × | × | × |
| UNIQUE | ○ | ○ | × | × | × |
| SORT | ○ | ○ | × | × | × |
| SORTBY | ○ | ○ | × | × | × |
| TEXTJOIN | ○ | ○ | ○ | × | × |
| IFS | ○ | ○ | ○ | × | × |
| MAXIFS | ○ | ○ | ○ | × | × |
| MINIFS | ○ | ○ | ○ | × | × |
この表を見ると、関数が「いつ追加されたか」で3つの世代に分かれることがわかります。順番に見ていきましょう。
Microsoft 365・Excel 2021で使える関数
XLOOKUP・FILTER・UNIQUE・SORT・SORTBYは、Microsoft 365(サブスクリプション版)またはExcel 2021以降で使えます。これらに加えて、XMATCH・SEQUENCE・RANDARRAYも同じ世代の関数です。
このグループの多くは「動的配列関数」と呼ばれ、1つの数式が複数のセルへ結果を自動で展開する「スピル」という仕組みを持っています。便利な反面、この仕組みごと古い版には存在しないため、Excel 2019以前で開くと #NAME? になります。
Web版のExcel(Excel for the web)でもこれらの関数は利用できます。ブラウザだけで作業している場合は、XLOOKUPもFILTERも問題なく動くと考えてよいでしょう。
Excel 2019で追加された関数
TEXTJOIN・CONCAT・IFS・SWITCH・MAXIFS・MINIFSは、買い切り版ではExcel 2019から搭載されました。Microsoft 365では先行して提供されていた関数群です。
つまり、Excel 2019であればこれらは使えますが、XLOOKUPやFILTERは使えない、という中間的な状態になります。「IFSは動くのにXLOOKUPは #NAME? になる」という現象は、まさにExcel 2019で起こりがちなパターンです。
ここを混同すると原因の切り分けを誤ります。エラーになった関数が上の対応表のどの行にあるかを確認するのが、診断の近道です。
Excel 2016・2013では使えない関数
Excel 2016の買い切り版とExcel 2013では、上の9関数はいずれも使えません。これらの版を使っている場合、新しい関数はほぼ使えないと考え、後述する代替方法に切り替えるのが現実的です。
なお、同じ「2016」でもOffice 365サブスクリプション経由でインストールされた版では、一部の関数が先行提供されていたケースがあります。判断に迷うときは、次の章のバージョン確認方法で実際の製品名を確かめてください。
自分のExcelバージョンを確認する方法
自分のExcelがどの世代かを知れば、対応表のどの列を見ればいいかが決まります。確認手順はかんたんです。
- Excelを開く
- 画面左上の「ファイル」をクリック
- 左メニューの「アカウント」を選ぶ(見当たらない場合は「ヘルプ」>「バージョン情報」)
- 「製品情報」の欄に「Microsoft 365」「Excel 2021」「Excel 2019」などの名称が表示される
ここに表示される製品名が、あなたのExcelの世代です。「Microsoft 365」や「Microsoft 365 Apps」と書かれていればサブスクリプション版で、XLOOKUPもFILTERも使えます。「Excel 2019」「Excel 2016」のように西暦が付いていれば買い切り版で、対応表の該当列を確認してください。
Web版(Excel for the web)はブラウザ上で動作するため、この手順では確認できません。ブラウザでExcelを開いて使っているなら、それがWeb版です。Web版ではXLOOKUPや動的配列関数(FILTER・UNIQUE・SORTなど)は利用できます。なお、TEXTSPLITやVSTACKなどの関数は2022年以降にMicrosoft 365へ追加されたもので、買い切り版(Excel 2021・2019)には含まれません。Web版では順次対応が進められています。
「_xlfn.XLOOKUP」と表示される理由
受け取ったファイルを開いたら、セルに =_xlfn.XLOOKUP(...) のような文字列が表示されていた——これは多くの人がつまずくポイントです。仕組みを知れば落ち着いて対処できます。
_xlfn.とは何か
Excelは新しい関数をファイルに保存するとき、後方互換のために _xlfn.関数名 という内部表記を使います。これは古い版でファイルを開いてもファイル自体が壊れないようにするための仕組みです。
そのファイルを、その関数に対応していない旧版で開くと、Excelは関数名を解決できません。その結果、数式バーやセルに _xlfn.XLOOKUP(...) という表記がそのまま見えてしまい、計算結果は #NAME? になります。
新しい版で作成: =XLOOKUP(A2,商品表!A:A,商品表!B:B)
↓ 旧版で開く
旧版での表示: =_xlfn.XLOOKUP(A2,商品表!A:A,商品表!B:B) → #NAME?
動的配列関数の場合は _xlfn._xlws.FILTER のような表記になることもあります。また、暗黙的交差を示す @ 記号が付く場合もあります。いずれも「この関数は今の版では使えない」という同じサインです。
ファイル受け取り後に_xlfn.が出たときの対処
_xlfn. が表示されたファイルを受け取ったときの選択肢は、おもに次の3つです。
- 自分のExcelをMicrosoft 365またはExcel 2021以降に更新する(最も根本的な解決)
- 旧版でも使える数式に作り直す(後述の代替関数チートシートを参照)
- ファイルの作成者に、旧版でも開ける形に直してもらうよう依頼する
注意したいのは、_xlfn. の文字を手作業で消すだけでは解決しないことです。関数自体が存在しないので、文字を削っても計算はできません。あくまで「対応する版で開く」か「対応する数式に置き換える」かのどちらかが必要です。
やってはいけない: _xlfn. の部分だけ消す → 関数は復活しない
正しい対処: 対応版で開く / 旧版用の数式に置き換える
旧バージョン向け代替関数チートシート
「会社のExcelは2016のままで、今すぐ更新できない」という人のために、代替手段をまとめました。まずは早見表で全体を確認し、よく使うものは下の例で具体的な数式を見てください。
| 使えない関数 | 旧版での代替 | 備考 |
|---|---|---|
| XLOOKUP | VLOOKUP / INDEX+MATCH | 左方向検索や複数条件はINDEX+MATCHが有利 |
| FILTER | オートフィルタ / 詳細設定フィルタ / 配列数式(IF+SMALL+ROW) | 配列数式はCtrl+Shift+Enterで確定 |
| UNIQUE | データ > 重複の削除 / ピボットテーブル | 関数化は難しい |
| SORT / SORTBY | データ > 並べ替え(手動) | |
| TEXTJOIN | CONCATENATE / & 連結 | 区切り文字は手動で挟む |
| IFS | ネストしたIF | |
| SWITCH | ネストしたIF / CHOOSE+MATCH | |
| MAXIFS / MINIFS | 配列数式 MAX(IF(…)) | Ctrl+Shift+Enterで確定 |
XLOOKUPの代替:INDEX+MATCHのパターン3選
XLOOKUPの代わりは、まずVLOOKUPが候補ですが、左方向の検索などVLOOKUPが苦手な場面ではINDEX+MATCHが頼りになります。コピペで使える3パターンを用意しました。
パターン1:基本の縦方向検索(VLOOKUPと同じ用途)
=INDEX(B:B,MATCH(A2,商品表!A:A,0))
パターン2:左方向の検索(検索列より左の値を取り出す)
=INDEX(商品表!A:A,MATCH(A2,商品表!B:B,0))
パターン3:見つからないときに空欄を返す(IFERRORで包む)
=IFERROR(INDEX(B:B,MATCH(A2,商品表!A:A,0)),"")
INDEXは「指定した範囲の何番目を取り出すか」、MATCHは「検索値が何番目にあるか」を返す関数です。この2つを組み合わせると、XLOOKUPと同じ「キーで引いて値を返す」動きが旧版でも再現できます。エラー時の表示を整えたいときはパターン3のようにIFERRORで包むと扱いやすくなります。
代替の選び方をもう少し深く知りたい場合は、VLOOKUP・XLOOKUP・INDEX+MATCHの比較と使い分けで違いを整理しています。エラー処理だけ補強したいならExcelのIFERROR関数の使い方も役立ちます。
FILTERの代替:IF配列数式パターン
FILTERは「条件に合う行だけを抜き出す」関数ですが、旧版では同じことをワンクリックで実現する手段がありません。一番手軽なのはオートフィルタやデータの並べ替えなどの操作機能です。
数式で再現したい場合は、IFとSMALL・ROWを組み合わせた配列数式を使います。
条件に合うデータを上詰めで抽出する配列数式(一例)
=IFERROR(INDEX($B$2:$B$100,SMALL(IF($A$2:$A$100="東京",ROW($A$2:$A$100)-1),ROW()-1)),"")
この数式はExcel 2019以前では確定時にCtrl+Shift+Enterを押す必要があります(配列数式として確定される)。ただし設定がやや複雑なので、まずはオートフィルタや詳細設定フィルタで代用できないかを検討するのが現実的です。
UNIQUEの代替:重複削除の手順
UNIQUE(重複を除いた一覧を作る関数)は、旧版では関数で再現するのが難しいため、操作機能で対応します。手順は次のとおりです。
- 対象の列を選択する
- リボンの「データ」タブ > 「重複の削除」をクリック
- 対象列にチェックを入れて「OK」
元データを残したい場合は、いったん別のシートや列に値を貼り付けてから重複の削除を実行してください。集計の切り口として使いたいなら、ピボットテーブルの行ラベルに項目を置くだけでも一意の一覧が得られます。
ファイル受け渡し時のトラブルを防ぐ対策
#NAME? トラブルの多くは、版の違う相手とファイルをやり取りするときに起きます。事前のひと手間で防げるので、配布前のチェックを習慣にしましょう。
互換性チェックを事前に実行する
Excelには、古い版で問題が起きそうな箇所を事前に教えてくれる機能があります。
- 「ファイル」 > 「情報」を開く
- 「問題のチェック」 > 「互換性チェック」をクリック
- 古い版で再現できない機能の一覧が表示される
ここで新しい関数が使われていると警告が出るので、配布前に把握できます。相手の版がわかっているなら、対応していない関数を上のチートシートに沿って置き換えてから渡すと親切です。
保存形式と共有相手のバージョン確認
ファイルを共有する前に、相手のExcelのバージョンをひとこと確認しておくとトラブルを未然に防げます。「XLOOKUPを使っているけど、お使いのExcelは365か2021ですか?」と聞くだけで十分です。
相手が旧版だとわかった場合は、代替関数で作り直すか、計算結果を「値として貼り付け」してから渡す方法もあります。値貼り付けにすれば数式そのものが消えるので、どの版で開いても #NAME? にはなりません。ただし後から数式を編集できなくなる点には注意してください。
数式が思ったとおりに反映されない、計算されないといった別系統のトラブルが疑われる場合は、Excelの関数が計算されない・反映されない原因と対処もあわせて確認しておくと安心です。
よくある質問(FAQ)
Microsoft 365に更新すれば使えるようになりますか?
はい。Microsoft 365にすればXLOOKUP・FILTERをはじめとする新しい関数が使えるようになります。すでに _xlfn.XLOOKUP 表示や #NAME? になっているファイルも、Microsoft 365で開き直せば正しく計算されるようになります。ただし会社のパソコンの場合、更新には情報システム部門の許可が必要なことが多いので、勝手にアップグレードする前に確認しましょう。
Excel Onlineでは新関数が使えますか?
Web版のExcel(Excel for the web)でも、XLOOKUPや動的配列関数(FILTER・UNIQUE・SORTなど)は利用できます。ブラウザだけで作業している人なら、これらの関数は問題なく動くと考えてよいでしょう。なお、2022年以降にMicrosoft 365へ追加されたTEXTSPLITやVSTACKなどの最新関数は、Web版では順次対応となっています。XLOOKUPが使える環境になったら、使い方はExcelのXLOOKUP関数の使い方で確認してください。
会社のパソコンでバージョンを上げられない場合は?
その場合は、この記事の代替関数チートシートに沿って数式を作り直すのが最も確実です。XLOOKUPはINDEX+MATCHで、IFSはネストしたIFで、というように、旧版でも動く形に置き換えれば #NAME? を回避できます。受け取ったファイルが新関数まみれで手に負えないときは、作成者に「旧版でも開ける形に直してほしい」と依頼するのも有効な手です。
_xlfn.の文字を消せば直りますか?
いいえ。_xlfn. は関数が今の版に存在しないことを示す表記なので、文字だけ消しても計算はできません。直すには、対応するバージョン(Microsoft 365・Excel 2021以降)で開くか、旧版でも使える数式に置き換えるかのどちらかが必要です。
まとめ
XLOOKUPやFILTERが「使えない」「#NAME? になる」原因の多くは、数式のミスではなくバージョン不足です。これらの動的配列関数はMicrosoft 365またはExcel 2021以降でないと動かず、TEXTJOINやIFSはExcel 2019以降が必要、という対応関係を押さえるのが第一歩です。
受け取ったファイルに _xlfn. が表示されたら、それは「この関数は今の版には存在しない」というサインです。文字を消すのではなく、対応する版で開くか、INDEX+MATCHなどの代替数式に置き換えて対処しましょう。
まずは「ファイル > アカウント」で自分のExcelの世代を確認し、対応表のどの列に当たるかを見極めてください。版の壁さえ理解できれば、目の前の #NAME? は怖くありません。今すぐ更新できない環境でも、この記事の代替手段で十分に乗り切れます。
