旧バージョン互換に変換¶
場所: リボン EGTools タブ → EGTools グループ → スプリットボタンのドロップダウンメニュー
最新の Excel で作成したブックを旧バージョンの Excel で開くと、新しい関数が _xlfn.XLOOKUP のような
壊れたトークンとして表示され、#NAME? エラーになります。このボタンは、アクティブブックのすべての数式で
モダン/ネイティブ関数のトークンを EGTools 互換の関数名へ一括変換し、旧バージョンの Excel でも
数式がそのまま計算されるようにします。
動作手順¶
- 保存の確認 — 数式を直接変更するため、保存済みのブックでのみ実行されます。 未保存の場合は保存するかどうかを確認してから続行します(拒否/キャンセル時は中止)。
- 事前スキャン — すべてのワークシートの数式と定義された名前を読み取り専用で走査し、 変換対象の関数ごとの件数を要約して表示します。対象がなければ案内して終了します。
- バックアップ — 続行を選ぶと、変換の直前にバックアップファイルが自動保存されます
(ブックと同じフォルダー、
元の名前_egbak_<時刻>.<拡張子>)。バックアップに失敗した場合は変換しません。 - 変換と結果 — 変換した箇所の数とバックアップファイルのパスを要約して表示します。
変換ルール¶
| 対象 | 変換 |
|---|---|
| 一般の互換関数 | _xlfn.関数 / _xlfn._xlws.関数 / EG.関数 → 関数(EGTools のドロップイン名)。名前が衝突する SORT/FILTER/LET は xSORT/xFILTER/xLET に変換されます |
| IMAGE | _xlfn.IMAGE / EG.IMAGE → IMAGE |
| GROUPBY / PIVOTBY | 関数名を GROUPBY/PIVOTBY に変え、集計子の引数に引用符を追加します(SUM または _xleta.SUM → "SUM"。ネイティブ対応の集計子 16 種に限ります。LAMBDA などの場合はその数式には手を付けません)。後続の省略可能な引数があっても変換されます(引数の順序はネイティブと同一) |
_xlpm.*(LET/LAMBDA のパラメーター) |
最新の Excel が LET/LAMBDA のパラメーター名を保存する内部プレフィックスです。旧バージョンでは =_xlfn.LET(_xlpm.x, …) のように表示され、_xlpm. を含む数式は Excel が書き戻しを拒否するため、このプレフィックスを除去します(_xlpm.x → x)。変換の要約では _xlpm.* 項目として集計されます |
_xll.* / _xludf.*(アドイン UDF の保存プレフィックス) |
EGTools 関数が登録されていない環境で開いたブック(特に定義された名前)に残るプレフィックスを除去し、登録済みの EGTools 関数へ再接続します(_xll.xSORT(…) → xSORT(…))。他のアドインの関数には手を付けません。変換の要約では _xll.* 項目として集計されます |
_xlfn._ARRAY / _xlfn._ARRAYROW(セル内配列ラッパー) |
Microsoft 365 ベータ版がスピル結果を 1 つのセルに収めるときに保存する内部関数です。ネイティブがないホストでは #NAME? になるため、同じ値をテキスト表記で返す ARRAYTOTEXT(…,1) に変換します: _xlfn._ARRAYROW(a) → a、_xlfn._ARRAYROW(a,b,…) → HSTACK(a,b,…)、_xlfn._ARRAY(r) → ARRAYTOTEXT(r,1)、_xlfn._ARRAY(r1,r2,…) → ARRAYTOTEXT(VSTACK(r1,r2,…),1)。例: =_xlfn._ARRAY(_xlfn._ARRAYROW(FILTER(A:A,B:B=1))) → =ARRAYTOTEXT(FILTER(A:A,B:B=1),1)。結果のテキストはリスト/配列セル → テキストの厳密表記({"a",1;"b",2})と同じで、HAS/HASANY/HASALL/FLATTEN がそのまま読み取れます。内側から再帰的に処理され、入れ子の _ARRAY は外側のテキスト内の引用されたテキスト項目になります。変換の要約では _ARRAY/_ARRAYROW 項目として集計されます |
| 段階的ロールアウト関数(HAS/HASANY/HASALL/FLATTEN、IMPORTTEXT/IMPORTCSV) | この Excel にネイティブが実際に存在しない場合(実行時に確認)、_xlfn.HAS / 素の HAS → EG.HAS のようにこのホストに登録されている EG. 名へ変換します(Microsoft 365 の非ベータチャネルでの #NAME? を防止)。2024 以下の旧バージョンでは従来どおり素の名前(HAS)です。EG. 名に変換したブックを後で旧バージョンで再変換すると素の名前になります |
文字列リテラルの内部や、他の識別子の一部は変更されません(識別子単位の置換)。
参考¶
- 元に戻すには組み込み関数に復元を実行するか、バックアップファイルを開いてください。
- 変換対象の関数リストはアドインの関数登録リストと単一ソースで管理されており、常に一致します。
- ベータ版で作成したリスト/配列セルそのものは、このコマンドでは扱いません。セルのリストを参照する HAS などの
数式が
#VALUE!にならないよう、先にリスト/配列セル → テキストを実行してから このコマンドを実行してください。