セルに#NAME?エラーが出て、数式バーに `_xlfn.` が表示されるのはなぜ?
結論
使用しているExcelバージョンが関数に対応していないことが原因です。_xlfn.XLOOKUP、_xlfn.FILTERなど関数ごとに必要バージョンが異なります。
詳しい解説
`_xlfn.`プレフィックスは「このExcelバージョンが対応していない関数」を示す内部識別子です。Excel 2021/365で作成されたファイルを古いExcel 2016/2019で開いた場合に、認識できない関数名の前に自動的に付加されます。
主な発生パターンと対応関数: - `_xlfn.XLOOKUP` → Excel 2021以降が必要(代替:VLOOKUP/INDEX+MATCH) - `_xlfn.FILTER` / `_xlfn.SORT` / `_xlfn.UNIQUE` → Excel 2021以降が必要(代替:オートフィルター、SUMPRODUCT+IF) - `_xlfn.IFS` / `_xlfn.SWITCH` → Excel 2019以降が必要(代替:ネストIF) - `_xlfn.TEXTJOIN` / `_xlfn.CONCAT` → Excel 2019以降が必要(代替:CONCATENATE/&演算子) - `_xlfn._xlws.SORT` → ワークシート関数版SORT(Excel 365特有) - `_xlfn.LET` → Excel 2021以降が必要(代替:ヘルパーセル)
対処法は3つあります。①対応バージョンのExcelで開く、②代替関数に書き換える、③「互換性チェック」機能(ファイル→情報→問題のチェック→互換性チェック)で事前に確認する。
よくあるエラーと対処法
_xlfn.XLOOKUP が表示される原因: XLOOKUP関数はExcel 2021以降専用です。Excel 2016/2019では認識されません。
対処: =VLOOKUP(検索値, 範囲, 列番号, FALSE) または =INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0)) に書き換えてください。
_xlfn.FILTER / _xlfn.SORT / _xlfn.UNIQUE が表示される原因: 動的配列関数はExcel 2021以降専用です。Excel 2019以前では使えません。
対処: フィルタリングはオートフィルター機能、集計はSUMPRODUCT関数、重複除外は「重複の削除」機能で代替してください。
_xlfn.IFS / _xlfn.SWITCH が表示される原因: IFS関数・SWITCH関数はExcel 2019以降が必要です。Excel 2016では使えません。
対処: ネストしたIF関数に書き換えてください。例:=IF(条件1, 値1, IF(条件2, 値2, その他))
_xlfn.TEXTJOIN / _xlfn.CONCAT が表示される原因: TEXTJOIN関数・CONCAT関数はExcel 2019以降が必要です。Excel 2016では使えません。
対処: CONCATENATE関数または&演算子に書き換えてください。例:=A2&", "&B2&", "&C2
バージョン対応
| Excel 2016 | Excel 2019 | Excel 2021 | Excel 2024 | Microsoft 365 |
|---|---|---|---|---|
| 全バージョン共通のトラブル | 全バージョン共通のトラブル | 全バージョン共通のトラブル | 対応 | 全バージョン共通のトラブル |
実務での使用例
他社からもらったファイルでエラーが出る場合
取引先がExcel 365で作ったXLOOKUP入りの請求書を、自分のExcel 2019で開くと#NAME?が出る。数式バーに`_xlfn.XLOOKUP`と表示されたら、=VLOOKUP(...)か=INDEX(MATCH(...))に書き換えて対応する
互換性チェックで事前確認する
ファイルを送る前に「ファイル→情報→問題のチェック→互換性チェック」を実行すると、古いバージョンで動作しない関数や機能の一覧が表示されます。