コンテンツにスキップ

リスト/配列セル → テキスト

場所: リボン EGTools タブ → EGTools グループ → スプリットボタンのドロップダウンメニュー

Microsoft 365 ベータ(バージョン 2610、ビルド 20520 以降)のセル内リスト/配列(Lists in Cells)は リッチ値として保存されるため、旧バージョンの Excel(通常の Microsoft 365 を含む)では #UNKNOWN! (Excel 2016 では #VALUE!)としか表示されず、項目を読み取れません。このコマンドは保存済みファイルの richData を直接読み取り、各リストセルを下記のテキスト表記に書き換えます。変換後のテキストは 互換関数 HAS · HASANY · HASALL · FLATTEN で 評価できます(Microsoft 365 ではネイティブと共存するように EG.HAS のような EG. プレフィックスで登録されます)。

テキスト表記

リストの形 表記 例
1 列のリスト(入れ子なし) カンマ区切り — ARRAYTOTEXT の簡潔形式と同じ。項目に , ; { } " や前後の空白があるか、数値/TRUE/エラーとして読まれるテキストは "…" で引用(内部の " は "") Mon, Tue, Wed / "1,000", "TRUE"
2 次元・入れ子の配列 配列定数形式 — ARRAYTOTEXT の厳密形式(テキストはすべて引用、空白なし、; が行・, が列)を中かっこの入れ子で拡張 {"a",1;"b",2} / {"a",{"b","c"},"d"}
数値/論理値 1 項目だけのリスト テキストではなく数値/論理値の値そのものとして書きます 3, TRUE
  • 配列定数形式のテキストは、ベータ版 Excel で先頭に = を付けるとそのままセル内配列数式になります。
  • HAS 系関数は両方の表記を読み取ります。カンマ区切りリストや {…} 内の項目は、数値の形 → 数値、 TRUE/FALSE → 論理値、#N/A などのエラー名 → エラーとして読まれ、カンマも中かっこもない単一のテキストは 分類せずテキストのまま項目 1 個になります。引用符が閉じていないなど解析できない場合はエラーを出さずに 全体を項目 1 個として扱います。

動作手順

  1. ファイルの読み取り — 現在のブックのコピー(SaveCopyAs)を一時フォルダーに展開し、richData (リスト/配列のリッチ値)を読み取ります。未保存の編集もコピーに含まれるため、そのまま反映されます。
  2. 対象の確認 — リストセルがなければ案内して終了します。
  3. 確認ウィンドウ — 値のリストセル N 個を変換することを知らせます。数式結果のリストセルが M 個あれば 「それもテキストに固定しますか?」と尋ねます: はい = すべて / いいえ = 値セルのみ / キャンセル。 (数式のリストセルは _xlfn._ARRAY(...) として保存されるため、旧バージョンではいずれにせよ #NAME? です。 いいえを選んで値セルがなければ終了します。)
  4. 保存ゲート + バックアップ — 未保存の場合は保存するかどうかを確認し(拒否/キャンセル時は中止)、 適用の直前にバックアップファイルが自動保存されます(ブックと同じフォルダー、 元の名前_egbak_<時刻>.<拡張子> — 旧バージョン互換に変換と同じ手順)。 バックアップに失敗した場合は続行しません。
  5. 適用 — 下記のルールに従って各リストセルをテキスト(または値)に書き換えます。
  6. 完了ウィンドウ — 変換したセル数、スキップしたセル数(ある場合)、バックアップファイルのパスを案内します。

適用ルール

対象 処理
値のリストセル 現在の値がエラー(#UNKNOWN!/#VALUE!)のセルだけをテキストに書き換えます。保存後に編集されてエラーでなくなったセルはスキップします
数式のリストセル 確認ウィンドウではいを選んだ場合のみ変換します。元の数式はセルのメモに EgListRemoved: <数式> として保存されます(既存のメモがあれば後ろに追記)
CSE 配列範囲 範囲全体を値に固定してから、そのセルにテキストを書きます
数式/数値/TRUE として自動解釈されるテキスト セルの表示形式を文字列(@)に変えてから入力します
数値/論理値 1 項目だけのリスト テキストではなく数値/論理値の値そのものとして書きます
_array 以外のリッチ値(セル内の画像、リンクされたデータ型など) 対象外です

参考

  • ベータ版 Excel でも同じコマンドが動作するため、共有前にあらかじめ変換する用途にも使えます。
  • 変換後は HAS / HASANY / HASALL / FLATTEN で同じ結果が得られます。ブックがベータ版 Excel で =HAS(...) のような数式で保存されている場合は、旧バージョン互換に変換が _xlfn.HAS・_xlfn._xlws.FLATTEN トークンを EGTools 互換の関数名に変換します。
  • 推奨の実行順序: ① リスト/配列セル → テキスト、② 旧バージョン互換に変換 (Microsoft 365 の非ベータ版では組み込み関数に復元)。この順序を守ることで =HAS(...) のような数式が #VALUE! ではなく正しい結果を返します。数式結果のリストセルをいいえで 残した場合、その _xlfn._ARRAY(...) 数式は旧バージョン互換に変換が ARRAYTOTEXT(…,1) に変換します。
  • 元に戻すにはバックアップファイルを開いてください。数式セルはメモの EgListRemoved: の数式でも確認できます。