エクセル入門
Excelの新機能「リストとセル内配列」:1つのセルに複数の値

Excelの初心者向け入門解説
公開日:2026-09-28 最終更新日:2026-10-09

Excelの新機能「リストとセル内配列」:1つのセルに複数の値


Excelに、セルの扱いを大きく広げる新機能が追加されました。


これまでExcelでは、基本的に「1セル=1つの値」としてデータを扱ってきました。
今回追加された「リスト(Lists)」や「セル内配列(Arrays in Cells)」では、1つのセルの中に複数の値を持たせることができます。

さらに、配列の中に別の配列を持つ「入れ子配列(Nested Arrays)」や、これらを扱うための新しい関数も追加されています。
本稿では、2026年9月時点のMicrosoft 365 Beta Channelで確認できる範囲について、できるだけ簡単な例で紹介します。

【注意】
本稿で紹介する機能は、2026年9月時点ではPreview機能です。
正式リリースまでに仕様や動作が変更される可能性があります。
Microsoftも、一般提供されるまでは重要なブックでの利用を推奨していません。


Excelの新機能「リストとセル内配列」:1つのセルに複数の値


※本記事の構成検討、文章の作成・推敲、技術的な確認の補助に生成AI(ChatGPT等)を使用しています。
掲載内容は、Microsoftの公式情報や筆者によるExcel Beta版の実機検証などを基に、筆者が確認・編集しています。



ページ内目次

1. Excelで「1セルに複数の値」を持てるようになった
2. リスト(Lists)とは
├─ 2-1 リストを作成する
├─ 2-2 カンマ区切り文字列や改行セルとの違い
├─ 2-3 リストを編集する
└─ 2-4 リスト項目でフィルターする

3. セル内配列(Arrays in Cells)とは
├─ 3-1 従来の動的配列はスピルする
├─ 3-2 { } で囲むと配列を1セルに保持できる
└─ 3-3 セル内配列を別セルから参照する

4. リスト・セル内配列・入れ子配列の関係
├─ 4-1 「リスト」と「セル内配列」の関係
├─ 4-2 セルの先頭に表示されるアイコン
└─ 4-3 配列の中に配列を持つ「入れ子配列」

5. 新しく追加された4つの関数
├─ 5-1 FLATTEN ― 入れ子配列を展開する
├─ 5-2 HAS ― 指定した値を含むか
├─ 5-3 HASANY ― どれか1つを含むか
├─ 5-4 HASALL ― すべて含むか
├─ 5-5 HAS, HASANY, HASALL のまとめ
└─ 5-6 既存関数でも利用できる

6. 新機能はどんな場面で使えるのか
├─ 6-1 1つのデータに複数の分類を持たせる
├─ 6-2 行ごとに長さが異なる計算結果を扱う
├─ 6-3 GROUPBY関数でグループごとのデータを1セルにまとめる
└─ 6-4 FILTER関数とHAS関数の組合せ

7. 互換性バージョン3と注意点
├─ 7-1 互換性バージョンとは
├─ 7-2 入れ子配列と互換性バージョン3
├─ 7-3 ブック間コピーには注意
└─ 7-4 新機能に未対応のExcelでは

8. VBAから見るとどうなるのか
├─ 8-1 Value / Value2 / Text
├─ 8-2 EvaluateとFLATTENで取得する
└─ 8-3 VBAで扱う場合の注意点

9. 現時点での機能制限
10. 対応バージョンとBeta版について
11. まとめ
12. 参考URL



1. Excelで「1セルに複数の値」を持てるようになった

今回の「リスト」「セル内配列」は、何のために追加されたのでしょうか。
まずは、これまでのExcelで扱えるデータや計算の広がりの中で、その位置付けを見てみます。

■ Excelで扱えるデータや計算の広がり
Excelのセルで扱えるものは、文字列や数値だけではありません。これまでにも、さまざまな機能が追加されてきました。

機能・種類 何ができるのか
基本値 文字列・数値・論理値・エラー値など、単一の値をセルに保持する。
動的配列 通常の数式入力で配列を計算できる。
計算結果をスピルによって複数セルへ展開することもできる。
リッチデータ型 株式・地理など、複数の属性(フィールド)を持つ構造化データを1セルに保持する。
セル内画像 画像をセルの値として保持する。
Pythonオブジェクト Pythonの処理結果をオブジェクトとして1セルに保持する。
リスト・セル内配列(今回の新機能) 複数の値からなる配列そのものを、1セルの値として保持する。
配列の中に別の配列を持つ「入れ子配列」も扱える。

※これは厳密なデータ型の分類ではなく、Excelで扱えるデータや計算の仕組みが広がってきた様子を示しています。

■ 配列を計算することと、セルに保持することは別の話
動的配列では、1つの数式を起点として配列を計算できます。その配列の各要素をワークシート上の複数セルへ自動的に展開する仕組みが「スピル」です。
つまり、配列の計算と、計算結果をどこに置くかは別の話です。

今回のセル内配列では、配列を複数セルへ展開するだけでなく、配列そのものを1つのセルの値として保持することができます。例えば、同じSORT関数でも次のように結果の扱いを変えられます。
=SORT(A1:A3)    → 配列の各要素を複数セルへスピル
={SORT(A1:A3)}  → 配列そのものを1セルに保持
詳しい数式の使い方は第3章で紹介します。

■ なぜ1セルに配列を保持するのか
例えば、1つの案件に「営業」「技術」「経理」という3つの担当部署を持たせたい場合を考えます。
従来も1セルに「営業,技術,経理」と入力できましたが、これはExcelにとっては1つの文字列です。各部署を個別に扱うには文字列の分割などが必要でした。

新しいリストなら、「営業」「技術」「経理」を独立した3つの項目のまま、1つのセルに保持できます。そのため、項目を数式で判定したり、必要に応じて取り出したり、複数セルへ展開したりできます。

なお、リッチデータ型も以前から1セルに複数の情報を持てますが、こちらは「名前付きの属性(フィールド)」を持つ構造化データです。今回のセル内配列は、縦・横などの形状や要素の位置を持つ配列そのものを保持する点が異なります。

今回の変更は、単に新しい関数が4つ増えたという話ではありません。
セルの中に保持できる値の構造が広がり、複数の値を配列のまま、数式やフィルターから利用できるようになったことが大きなポイントです。


2. リスト(Lists)とは

「リスト」は、1つのセルに複数の項目を持たせる機能です。
たとえば、「東京」「大阪」「名古屋」という3つの項目を、1つのセルの中に保持できます。
通常のカンマ区切り文字列とは異なり、Excelは各項目を個別の値として扱います。

2-1 リストを作成する

リストは、次の方法で作成できます。

セルに区切り文字で項目を入力・貼り付けし、挿入 → リスト、または Ctrl + J でリストに変換します。
たとえば、
「東京,大阪,名古屋」と入力して確定し、そのセルを選択した状態で「リスト」をクリック(またはCtrl + J)すると、1つのセルの中に「東京」「大阪」「名古屋」という3項目を持つリストを作成できます。
今回確認したBeta版では、もう一度「リスト」をクリック(またはCtrl + J)すると、リストが解除され、区切り文字を含む通常の文字列へ戻りました。

リスト Ctrl+J

上のGIFは、D1の文字列をリストに変換し、同じボタンでもう一度解除する操作例です。

空セルを選択して先にリスト化し、その後で項目を入力する方法もあります。
また、区切り文字列の入った複数セルを選択し、一括でリスト化することも確認できました。

リスト Ctrl+J
上のGIFでは、D1:D2を選択してまとめてリストに変換しています。

■ 区切り文字について
項目の区切り文字は地域設定に応じてカンマ(,)またはセミコロン(;)になります。今回確認した日本語Windows環境ではカンマでした。

地域設定のリストの区切り記号

2-2 カンマ区切り文字列や改行セルとの違い

従来でも、
東京,大阪,名古屋
という文字列を1つのセルに入力することはできました。
また、セル内改行を使えば、
東京
大阪
名古屋
のように表示することもできます。
しかし、これらは基本的には1つの文字列です。

新しいリストでは、「東京」「大阪」「名古屋」がそれぞれ個別の項目として扱われます。
この違いによって、各項目を数式やフィルターから直接扱えるようになります。

重要なのは、見た目が複数行になることではなく、セルの中に複数の値が存在していることです。

2-3 リストを編集する

作成したリストは、通常のセルと同じように、セルをダブルクリックするかF2キーを押して編集できます。
項目の追加・削除・変更も可能です。

Excelの新機能「リストとセル内配列」

また、セルの先頭に表示されるアイコンをクリックすると、リスト内の各項目を確認できます。

Excelの新機能「リストとセル内配列」

■ 項目の入力で気になる点
今回確認したBeta版では、「東京,大阪,東京」のように、同じ項目を重複して保持できました。
カンマ自体を1つの項目として入力したい場合は、次のようにダブルクォーテーションで囲みます。
","
また、空の項目と空文字は異なる扱いでした。今回のカンマ区切り環境では、
1,2,,3,4  →  1,2,#N/A,3,4
1,2,"",3,4  →  空文字("")も1項目として保持
のようになります。リスト内の最後の項目まで削除すると、空のリストではなく通常の空白セルになりました。
※以上は今回のBeta版で実際に確認した挙動です。

2-4 リスト項目でフィルターする

リストの分かりやすい特徴の1つがオートフィルターです。
たとえば1つのセルに「営業」「経理」という2つの項目が含まれている場合、「経理」という項目を持つ行として絞り込むことができます。

Excelの新機能「リストとセル内配列」

Excelの新機能「リストとセル内配列」

Excelの新機能「リストとセル内配列」

従来のカンマ区切り文字列を検索するのとは異なり、リスト内の要素・項目そのものを対象にできる点が特徴です。

■ リストを数式から参照する
リストを持つセルを別セルから参照すると、その値は配列として返されます。
画像の例ではD1がリストで、E1に次の式を入力しています。
=D1
この場合は、D1の各項目がE1から別々のセルへスピルします。

Excelの新機能「リストとセル内配列」

なお、
={D1}
とすると、リスト内の配列を1セルに保持できます。今回確認したBeta版では、数式の編集中にセルをクリックして参照すると、この{ }が自動的に付く場合もありました。詳しくは3-3で説明します。

Excelの新機能「リストとセル内配列」


3. セル内配列(Arrays in Cells)とは

セル内配列は、配列そのものを1つのセルの値として保持できる仕組みです。
数式が返した配列については、数式本体を中括弧 { } で囲むことで、スピルさせず1つのセルに保持できます。
本稿では、この数式結果を1セルに保持する例を中心に説明します。

3-1 従来の動的配列はスピルする

Excelの新機能「リストとセル内配列」

従来の配列定数は、定数を { } で囲みます。
本稿の日本語環境の配列定数では、列の区切りは「,」、行の区切りは「;」です。前述のCtrl + Jによるリスト項目の区切りとは別の話です。
={3,1,2}  →  横方向に3列へスピル
={3;1;2}  →  縦方向に3行へスピル

Excelの新機能「リストとセル内配列」

A1:A3に、次の値が入力されているとします。
3
1
2
別のセルに、
=SORT(A1:A3)
と入力すると、
1
2
3
という結果が複数のセルへスピルします。
これは現在の動的配列の基本的な動作です。
配列
 ↓
複数セルへ展開

3-2 { } で囲むと配列を1セルに保持できる

配列定数をさらに中括弧で囲むセル内配列の例

前節の配列定数をさらに外側からもう1組の { } で囲むと、配列全体を1つの要素として包み、1セルに保持できます。
={{3,1,2}}  →  横配列全体を1セルに保持
={{3;1;2}}  →  縦配列全体を1セルに保持
関数が返す配列についても同様に、数式の本体を { } で囲みます。

Excelの新機能「リストとセル内配列」
※アイコンの違いについては、4-2 セルの先頭に表示されるアイコン で説明します。

今回の新機能では、スピルする数式の本体を { } で囲むことで、配列の結果を1つのセルに保持できます。
通常は、
=SORT(A1:A3)
ですが、これを、
={SORT(A1:A3)}
とします。
すると、SORT関数が返した「1、2、3」という配列そのものが1つのセルの値として保持されます。
セル
 └─ 配列
     ├─ 1
     ├─ 2
     └─ 3
この違いが、今回のセル内配列を理解するうえで最も重要なポイントの1つです。

■当該ブックで初めて「セル内配列」の数式を使用した場合
今回の実機確認では、互換性バージョンが3ではないブックでセル内配列を使う数式を初めて入力すると、以下のメッセージが表示されました。
利用する場合は、既存数式への影響も確認したうえで「ブックをバージョン 3 にアップグレード」を選択します。
詳しくは、「7. 互換性バージョン3と注意点」で解説します。

Excelの新機能「リストとセル内配列」

■ 従来の配列数式の { } とは別物
古くからExcelを使っている人は、CSE(Ctrl+Shift+Enter)で入力した従来の配列数式を思い浮かべるかもしれません。
従来の配列数式では、Excelが数式全体を次のように表示していました。
{=SUM(A1:A3*B1:B3)}
今回のセル内配列で使用する { } は、それとは異なり、数式の一部として自分で入力します。

3-3 セル内配列を別セルから参照する

リストやセル内配列を参照するときは、数式の入力方法も結果に関係します。
今回確認したBeta版では、参照式を直接入力した場合と、数式の編集中に参照元セルをクリックした場合とで、後者に { } が自動付加される動作を確認しました。

Excelの新機能「リストとセル内配列」

Excelの新機能「リストとセル内配列」

Excelの新機能「リストとセル内配列」

同じ配列を返す数式でも、{ } の有無によって結果の保持方法が変わります。
{ } で囲む:配列を1セルの値として保持する。
{ } で囲まない:通常は複数セルへスピルする(展開先が空いている場合)。
※式が入れ子配列を返す場合や互換性バージョンが異なる場合などは、結果が変わることがあります。


4. リスト・セル内配列・入れ子配列の関係

4-1 「リスト」と「セル内配列」の関係

ここまでの2つを整理すると、次のようになります。

種類 主な作り方 特徴
リスト 入力・貼り付けした複数項目をリスト化 1セル内の各項目を個別の値として扱える
セル内配列 配列を { } で包むなど 配列そのものを1セルの値として保持できる

リストも、配列をセルの値として持てるようになった今回の仕組みの一部です。
リストは、その仕組みを項目の入力・編集に利用する機能です。本稿では分かりやすく、操作で作る「リスト」と、数式が返した配列を保持する「セル内配列」に分けて紹介しています。
セル内配列では、縦・横・2次元などの形状を持つ配列そのものを1セルに保持することもできます。

4-2 セルの先頭に表示されるアイコン

セルの先頭に表示されるアイコンは、保持している配列の形状などによって異なります。実機では、縦・横・2次元の形状に対応した表示を確認できました。

縦・横・2次元の配列を示すアイコン

複雑な入れ子配列では外側の配列に対応したアイコンが表示される場合もあるため、あくまで目安として見てください。

■ アイコンをクリックして配列の内容を確認する
セルの先頭に表示されているアイコンをクリックすると、セル内に保持されている配列の内容を確認できます。
入れ子配列の場合は、外側の配列の各要素である内側の配列が一覧表示されるため、セルの中にどのような配列が保持されているかを確認しやすくなります。
これは配列をワークシートへスピルしているのではなく、セル内に保持されている配列の内容を表示しているものです。

セル内配列のアイコンをクリックして配列内容を確認

4-3 配列の中に配列を持つ「入れ子配列」

今回の変更では、配列の中に別の配列を持つ「入れ子配列」も扱えるようになりました。
たとえば、次の数式です。
={{1,2,3};{4,5,6}}
この数式では、外側の配列と内側の配列で役割が異なります。

外側の配列は縦方向に2つの要素を持っているため、結果はA1:A2の2セルへスピルします。
一方、その2つの要素である {1,2,3} と {4,5,6} は、それぞれ横方向の配列として各セルの中に保持されます。

外側の配列
  ├─ {1,2,3}  → A1セルの中に保持
  └─ {4,5,6}  → A2セルの中に保持

外側の配列そのものは A1:A2 へスピル
このように、外側の配列は複数セルへスピルしながら、その各セルがさらに配列を値として持つことができます。
入れ子配列だからといって、全体が必ず1セルに収まるわけではありません。

外側の配列はスピルし内側の配列は各セルに保持される

イメージとしては、
配列
├─ 配列
│  ├─ 1
│  ├─ 2
│  └─ 3
└─ 配列
  ├─ 4
  ├─ 5
  └─ 6
という構造です。

■ 関数や数式が返す配列も要素にできる
入れ子配列の内側に入れられるのは、配列定数だけではありません。
関数や数式が返した配列を、外側の配列の要素として利用することもできます。

たとえば、次のような数式です。
={{1,2,3};SEQUENCE(,3,4);{6+SEQUENCE(3)}}
この例では、外側の配列は3つの要素を持つため、3セルへスピルします。
それぞれのセルには、次の配列が保持されます。

{1,2,3}           → 配列定数による横配列
SEQUENCE(,3,4)    → 関数が返す横配列
{6+SEQUENCE(3)}   → 数式が返す縦配列
つまり、入れ子配列では、固定した値だけではなく、計算によって作られた配列も、そのまま配列の要素として保持できます。
また、内側の配列は、すべて同じ形状である必要はありません。

関数や数式が返す配列を含む入れ子配列

■ 旧来の互換性バージョンのまま
従来のExcelでは、数式の結果として「配列の中に配列」が生じると、結果の一部だけが返されたり、#CALC! になったりする場合がありました。
今回の変更では、対応する数式について完全な入れ子結果を保持できるようになります。
なお、掲載した入れ子配列の例を旧来の互換性バージョンのまま計算すると、今回確認したBeta版では「#CALC!」になりました。

Excelの新機能「リストとセル内配列」

■ 入れ子配列の階層数
今回使用したBeta版で、中括弧の組を1階層として入れ子を増やしながら確認したところ、33階層までは数式を入力できましたが、34階層ではエラーになりました。
VBAからの数式設定だけでなく、数式バーへ直接入力した場合も同じ結果でした。
なお、Preview期間中の機能であり、以前のBeta版では異なる結果も確認しているため、今後この上限が変更される可能性があります。

Excelの新機能「リストとセル内配列」


5. 新しく追加された4つの関数

リストやセル内配列を扱うために、次の4つの関数が追加されています。
FLATTEN
HAS
HASANY
HASALL
ここでは、それぞれの役割が分かる程度の簡単な例に絞って紹介します。

5-1 FLATTEN : 入れ子配列を展開する

FLATTENは、入れ子になった配列を、指定した階層まで展開するための関数です。
■構文
=FLATTEN(array,[pad_value],[levels])
array 配列を指定します。
pad_value 不揃いな配列を展開するときの不足部分を埋める値に使います。
省略時は、不足部分は「#N/A」になります。
levels 入れ子の階層をどこまで解除するかを指定するための引数です。
省略時は、「1」になります。
※levelsに指定できる数値そのものについて、今回確認した範囲では明確な上限は存在しません。
ただし、今回のBeta版では入れ子配列そのものが33階層までのため、34以上を指定しても、それ以上に展開する階層はなく、実質的な意味はありません。
上表の既定値と以下の展開結果は、今回使用したBeta版で確認したものです。

まず、4-3で紹介した次の式をA1に入力した場合を考えます。
={{1,2,3};{4,5,6}}
A1:A2の各セルには、3項目の横配列が保持されています。C1に、
=FLATTEN(A1:A2)
と入力すると、各セル内の配列が展開され、C1:E2に2行3列の結果がスピルします。

FLATTENでセル内配列を2行3列に展開した結果

続いて、FLATTENの階層指定を見るため、少し深い入れ子配列を使います。

FLATTENの例で使用する元の入れ子配列

以下の実例では、A1に次の配列を保持しています。各横配列の3番目の要素に、それぞれ「31・32」「61・62」という縦配列が入っています。
={{{1,2,{31;32}};{4,5,{61;62}}}}
■ levels省略:1階層だけ展開
=FLATTEN(A1)
この場合は2行3列に展開されます。3列目には、さらに内側の縦配列が残っています。

FLATTENで1階層展開した2行3列の結果

■ levels=2:2階層目まで展開
=FLATTEN(A1,"",2)
こちらは4行3列になります。第2引数のpad_valueに空文字("")を指定しているため、不足部分には空文字が入ります。
この部分は見た目が空白でも、本当の空白セルではありません。展開後の範囲をCOUNTA関数で数えると、空文字も件数に含まれる点に注意してください。

FLATTENで2階層まで展開した4行3列の結果

これは1列に並べ直す処理ではなく、指定した階層まで入れ子を展開する処理です。掲載した例では、levelsを2以上にしても結果は同じでした。

5-2 HAS : 指定した値を含むか

HASは、配列の中に指定した値が存在するかを判定する関数です。
■構文
=HAS(array,value)
array 配列を指定します。
value 存在するかを判定する値
A1に「東京」「大阪」というリストが入っている場合、
=HAS(A1,"東京")
とすると、「東京」が含まれているためTRUEを返します。

Excelの新機能「リストとセル内配列」

5-3 HASANY : どれか1つを含むか

HASANYは、指定した複数の値のうち、どれか1つでも含まれているかを判定します。
■構文
=HASANY(array,values)
array 配列を指定します。
values 含まれているかを判定する複数の候補値を指定します。
A1に「東京」「大阪」というリストが入っている場合、
=HASANY(A1,{"東京","福岡"})
A1に「東京」または「福岡」が含まれていればTRUEを返します。

Excelの新機能「リストとセル内配列」

5-4 HASALL : すべて含むか

HASALLは、指定した値がすべて含まれているかを判定します。
■構文
=HASALL(array,values)
array 配列を指定します。
values 含まれているかを判定する複数の候補値を指定します。
A1に「東京」「大阪」というリストが入っている場合、
=HASALL(A1,{"東京","福岡"})
A1に「東京」と「福岡」の両方が含まれていればTRUEを返します。
5-2と同じリストなら福岡が含まれないため、結果はFALSEです。

Excelの新機能「リストとセル内配列」

5-5 HAS, HASANY, HASALL のまとめ

整理すると、
HAS     → 指定した値があるか
HASANY  → どれか1つでもあるか
HASALL  → すべてあるか

Excelの新機能「リストとセル内配列」
今回の実機テストでは、HASの第2引数を "東京" と {"東京"} のどちらで指定しても、この例の判定結果は同じでした。上のまとめ画像は後者を使用しています。

5-6 既存関数でも利用できる

リストやセル内配列を利用するために、必ず新しい4関数を使うわけではありません。
配列を扱える既存関数でも、新しい値を利用できるものがあります。
次の例では、A1に「数値と文字の組」を5組持つ入れ子配列を入力しています。元の数式は次の通りです。
={{{3,"c"};{1,"a"};{5,"e"};{4,"d"};{2,"b"}}}
このA1に対して、それぞれ以下の関数を使用しています。
=COUNT(A1)
=COUNTA(A1)
=SUM(A1)
=SORT(A1)

Excelの新機能「リストとセル内配列」
この例では、COUNTは数値の個数で5、COUNTAは数値と文字の合計で10、SUMは数値の合計で15を返しました。
SORTでは各組を保ったまま並べ替えられています。
特に、COUNT,COUNTAは配列の要素数 になるので、従来のセルの個数とは全く違った概念になるので注意が必要です。。

新関数と既存関数を組み合わせることもできます。
掲載したデータに対して、例えば次のように指定します。
=VLOOKUP(3,FLATTEN(A1),2,FALSE)
この例の結果は「c」になります。

配列の中から特定の1項目だけを取り出したい場合は、INDEX関数も利用できます。
同じA1のデータをFLATTENで展開して、2行目・2列目の値を取り出すなら、
=INDEX(FLATTEN(A1),2,2)
この例では「a」が返されます。


6. 新機能はどんな場面で使えるのか

ここでは、新しい仕組みがどのような場面で役立つのか、3つの例で見てみます。

6-1 1つのデータに複数の分類を持たせる

たとえば案件一覧で、1つの案件に「営業」「技術」という複数の担当部署を持たせることができます。

画像の例ではB2に担当部署のリストがあります。次の式で「営業」が関係する案件かどうかを直接判定できます。
=HAS(B2,"営業")

Excelの新機能「リストとセル内配列」

画像には既存のCOUNTIFSとの比較も載せています。
どちらの式も新しいリストを対象としており、HASなら「含むか」という判定の意図を直接表現できるのが特徴です。

6-2 行ごとに長さが異なる計算結果を扱う

数式が返すデータの件数が行ごとに異なる場合、従来は1行ずつ横方向へスピルさせるか、REDUCEとVSTACKなどを組み合わせて結果を積み上げる方法がありました。
新しい入れ子配列の仕組みでは、行ごとの異なる長さの結果を配列として扱い、FLATTENでまとめて展開することもできます。
次の3つの数式と結果を比べてみてください。

横スピルを縦にフィル
Excelの新機能「リストとセル内配列」
=TEXTSPLIT(A1,",")

REDUCE+VSTACKで1発スピル
Excelの新機能「リストとセル内配列」
=IFERROR(
    DROP(
        REDUCE("",A1:A3,LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,",")))),
    1),
"")

REDUCE+VSTACKについては、REDUCE+VSTACKが遅い理由と解決策 も参考にしてください。
・LAMBDAヘルパー関数について ・REDUCE+VSTACKのサンプル ・REDUCE+VSTACKが遅い理由と解決方法 ・ブロック・リダクションの実例

入れ子配列(Nested Arrays)
互換性バージョン3では、TEXTSPLITが各行の分割結果を内側の配列として返し、FLATTENで必要な場所へまとめて展開できます。

Excelの新機能「リストとセル内配列」
=FLATTEN(TEXTSPLIT(A1:A3,","),"")
行ごとの結果を配列として扱い、最後に表へ展開する例です。REDUCE+VSTACKを使用した例と比べると、数式が格段に簡単になっているのが分かります。

6-3 GROUPBYでグループごとのデータを1セルにまとめる

GROUPBY関数は、通常、グループごとの合計や件数などを求めるために使用します。
GROUPBY関数は、行(縦)方向でグループ化し、指定した関数で値を集計します。行(縦)の軸に沿ったグループ化と、関連する値の集計がサポートされます。複数の行グループレベルに対応しています。総計・小計、並べ替え、フィルター処理もサポートされています。
今回のセル内配列を利用すると、集計値ではなく、グループに属するデータそのものを配列として返すこともできます。

たとえば、担当者と担当店舗を記録した一覧表があるとします。
これを担当者ごとにまとめ、各担当者が受け持っている店舗を一覧にしてみます。

Excelの新機能「リストとセル内配列」

D1セルに、次の数式を入力します。
=GROUPBY(A1:A7,B1:B7,LAMBDA(x,{x}),3,0)
ポイントは、GROUPBYの集計方法に指定している LAMBDA(x,{x}) です。
通常はSUMなどで集計するところを、グループ内のデータをそのまま { } で囲み、セル内配列として返しています。
なお、第4引数の「3」は、元データの先頭行を見出しとして扱い、結果にも見出しを表示する指定です。第5引数の「0」は総計を表示しない指定です。

Excelの新機能「リストとセル内配列」

結果は、見出しを含めてD1:E4にスピルします。
そして、E列の各セルには、それぞれの担当者が受け持つ店舗名が配列として格納されています。

ほぼ同じ見た目の結果はTEXTJOINでも作成できますが、今回の結果は文字列を連結したものではなく、個々の店舗名を配列の要素として保持している点が大きな違いです。
店舗名は、それぞれ独立した配列の要素として保持されているため、HAS関数などで個別に扱うこともできます。
たとえば、佐藤さんの担当店舗が入っているE2セルに対して、
=HAS(E2,"川崎店")
とすれば、TRUEが返されます。
GROUPBYの結果は表としてスピルし、その表の各セルがさらに配列を持つ。
このように、セル内配列を利用することで、従来の集計関数でも、グループごとの複数データを簡単に扱えるようになります。

6-4. FILTER関数とHAS関数の組み合わせ

HAS関数は、FILTER関数と組み合わせることで、複数の値のいずれかに一致する行を簡潔に抽出できます。
例えば、担当者と担当店舗の一覧から、「佐藤」または「鈴木」の行だけを抽出する場合を考えます。
従来は、複数の比較条件を + でつないでOR条件を作成します。

=FILTER(A2:B7,(A2:A7="佐藤")+(A2:A7="鈴木"))

=FILTER(A2:B7,(A2:A7="佐藤")+(A2:A7="鈴木"))

HAS関数を使うと、次のように書けます。

=FILTER(A2:B7,HAS({"佐藤","鈴木"},A2:A7))

=FILTER(A2:B7,HAS({"佐藤","鈴木"},A2:A7))

■ HAS関数の引数の指定には注意
HAS(array,value)

HAS関数は、第1引数 array の中に、第2引数 value が存在するかを判定します。
そのため、「A2:A7の中から佐藤や鈴木を探す」と考えると、
=HAS(A2:A7,{"佐藤","鈴木"})
と書きたくなります。
しかし、FILTER関数の抽出条件として使う場合は、考え方を逆にします。
=HAS({"佐藤","鈴木"},A2:A7)
つまり、A2:A7の各値について、{"佐藤","鈴木"} の中に含まれているかを判定します。
A2:A7が、
田中
佐藤
田中
鈴木
佐藤
田中
であれば、HAS関数は次のように判定します。
HAS({"佐藤","鈴木"},"田中") → FALSE
HAS({"佐藤","鈴木"},"佐藤") → TRUE
HAS({"佐藤","鈴木"},"田中") → FALSE
HAS({"佐藤","鈴木"},"鈴木") → TRUE
HAS({"佐藤","鈴木"},"佐藤") → TRUE
HAS({"佐藤","鈴木"},"田中") → FALSE
したがって、
=HAS({"佐藤","鈴木"},A2:A7)
これは、次の論理値配列を返します。
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
FILTER関数は、このTRUEになった行を抽出します。
従来の、
(A2:A7="佐藤")+(A2:A7="鈴木")
では、検索する条件値が増えるたびに条件式を追加する必要があります。
HAS関数では、
{"佐藤","鈴木"}
のように、検索する値を配列としてまとめて指定できます。
「範囲の中から複数の値を探す」のではなく、
「範囲内の各値が、指定した値の一覧に含まれているかを調べる」
と考えるのがポイントです。

■ HASANY関数ではうまくいかない
「佐藤または鈴木」という条件なので、名前からはHASANY関数を使いたくなるかもしれません。
しかし、HASANY関数はこの用途には適していません。

=FILTER(A2:B7,HASANY(A2:A7,{"佐藤","鈴木"}))

=FILTER(A2:B7,HASANY(A2:A7,{"佐藤","鈴木"}))

HASANY関数は、第2引数の複数の値のうち、いずれかが第1引数の配列内に存在するかを判定します。
この例では、「A2:A7のどこかに佐藤または鈴木が存在するか」を調べるため、結果は1つのTRUEまたはFALSEになります。
FILTER関数で必要なのは、各行について、
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
このように、行数と対応したTRUE/FALSEの配列です。
HASANY関数は範囲全体に対して1つのTRUE/FALSEを返すのに対し、FILTER関数では各行に対応したTRUE/FALSEの配列が必要です。
そのため、このHASANY関数の使い方では、FILTER関数の抽出条件として利用できません。


7. 互換性バージョン3と注意点

今回の新機能では、「互換性バージョン3」も重要です。

※通常のリストは、今回確認した互換性バージョン1~3の各ブックで使用できました。
互換性バージョンは、Excelの一部の計算動作を管理する設定です。
単にCtrl + Jでリストを作成する操作については、今回の実機テストではバージョンによる違いはありませんでした。

7-1 互換性バージョンとは

互換性バージョンは、Excelの一部の計算動作をブック単位で管理する仕組みです。
次の場所から設定できます。
数式 → 計算方法の設定 → 互換性バージョン

Excelの新機能「リストとセル内配列」

重要なのは、Excel全体の設定ではなく、ブック単位の設定であることです。

7-2 入れ子配列と互換性バージョン3

Compatibility Version 3はセル内配列とともに提供され、入れ子配列を使った多くの計算で必要になります。

Version 3では、一部の既存数式がVersion 1や2とは異なる結果を返す場合があります。
互換性バージョンの変更は過去の変更も含むため、Version 1から3へ変更するときは、Version 2で導入された文字列関数の変更にも注意が必要です。
たとえば、=LEN("😇") の結果は、Version 1では「2」、Version 2以降では「1」です。これはVersion 3で新たに生じた変更ではありません。

掲載した入れ子配列の例では、Version 3で得られた結果が、Version 1や2では「#CALC!」になったり、配列の先頭だけが表示されたりしました。
したがって、
「最新のExcelブックだからVersion 3にすればよい」と単純に考えるのではなく、既存ブックでは計算結果を確認してから変更する必要があります。

Excelの新機能「リストとセル内配列」

Excelの新機能「リストとセル内配列」

7-3 ブック間コピーには注意

互換性バージョンはブック単位なので、セル内配列や入れ子配列を別ブックへコピーする場合は注意が必要です。
以下は、今回使用したBeta版でセルコピー・シートコピーを試した結果です。
通常のリストは、確認したバージョン間ではリストのままコピーされました。
一方、Version 3のセル内配列をVersion 1 / 2へコピーした場合、同じ計算結果を保持できない例がありました。
※以下は確認した操作と数式についての結果であり、あらゆる配列・コピー方法に共通する仕様を示すものではありません。

操作 コピー元の
互換性バージョン
コピー先の
互換性バージョン
説明
リストのセルコピー 3 3 リストとしてコピーされる
リストのセルコピー 3 1 , 2 リストとしてコピーされる
リストのセルコピー 1 , 2 3 リストとしてコピーされる
リストのあるシートコピー 3 3 リストとしてコピーされる
リストのあるシートコピー 3 1 , 2 リストとしてコピーされる
リストのあるシートコピー 1 , 2 3 リストとしてコピーされる
セル内配列のセルコピー 3 3 セル内配列としてコピーされる
セル内配列のセルコピー 3 1 , 2 エラーまたは配列の先頭のみ表示
セル内配列のシートコピー 3 3 セル内配列としてコピーされる
セル内配列のシートコピー 3 1 , 2 エラーまたは配列の先頭のみ表示


7-4 新機能に未対応のExcelでは

ここまでの互換性バージョン1~3の違いは、新機能が提供されているExcel内での計算設定の話です。
新機能そのものに未対応の古いExcelで開く場合とは区別してください。
今回の実機確認では、未対応のExcelでセル内配列の数式を開くと、数式が _xlfn._ARRAY や _xlfn._ARRAYROW などの未対応関数を含む表記となり、この例では#VALUE!が表示されました。

Excelの新機能「リストとセル内配列」

今回確認した環境では、新しい関数を使った数式について、未対応のExcelで開いた直後も、保存時の計算結果が表示されました。
ただし、未対応のExcelでは、その数式を正しく再計算できません。開く際や再計算時にエラーが表示される場合もあります。

Excelの新機能「リストとセル内配列」

※これは今回確認した環境での例であり、すべての旧バージョンで同じエラー表示になると断定するものではありません。

8. VBAから見るとどうなるのか

Excel/VBAを利用している場合、今回の変更は特に確認しておきたい部分です。

現時点では、セル内配列専用として追加された新しいRangeプロパティやメソッドは確認できません。
今回のBeta版で確認した例では、Value/Value2では通常のセル値を取得できず、Textではセルの表示文字列を取得できました。

Microsoft公式発表ではVBAについて詳しい説明がないため、以下には実機テストで得られた結果を掲載します。正式な一般仕様として断定するものではありません。

8-1 Value / Value2 / Text

A1に「1、2、3」のセル内配列が入っている状態で、まず次のプロパティを確認しました。
Range("A1").Value
Range("A1").Value2

値だけではなく、IsEmptyとVarTypeで型や状態も調べました。
Debug.Print "Value:" & Range("A1").Value
Debug.Print "IsEmpty(Value):" & IsEmpty(Range("A1").Value)
Debug.Print "VarType(Value):" & VarType(Range("A1").Value)
Debug.Print ""
Debug.Print "Value2:" & Range("A1").Value2
Debug.Print "IsEmpty(Value2):" & IsEmpty(Range("A1").Value2)
Debug.Print "VarType(Value2):" & VarType(Range("A1").Value2)
Debug.Print ""
Debug.Print "Text:" & Range("A1").Text
Debug.Print "IsEmpty(Text):" & IsEmpty(Range("A1").Text)
Debug.Print "VarType(Text):" & VarType(Range("A1").Text)
今回のBeta版での実行結果は、次のとおりです。
Value:
IsEmpty(Value):True
VarType(Value):0

Value2:
IsEmpty(Value2):True
VarType(Value2):0

Text:1, 2, 3
IsEmpty(Text):False
VarType(Text):8
ValueとValue2はEmpty(VarType = 0)となり、Textは表示文字列(VarType = 8/String)が返りました。
Textが返すのはセルに現在表示されている文字列であり、配列の各要素をデータとして取得しているわけではありません。表示形式や列幅の影響にも注意が必要です。

8-2 EvaluateとFLATTENで取得する

■ 互換性バージョンを指定するプロパティ
以下のコードにある ActiveWorkbook.CompatibilityVersion は、アクティブなブックの互換性バージョンを指定するプロパティです。
ActiveWorkbook.CompatibilityVersion = 3
下の例では入れ子配列を扱うため、テスト用ブックを互換性バージョン3に設定しています。
互換性バージョンの変更はブック内の既存数式の計算結果に影響する場合があるため、実際の業務用ブックに無条件で実行しないでください。
詳しくは第7章で説明しています。

■ WorksheetFunctionに登録されていない新関数を使うには
VBAからExcelのワークシート関数を呼び出す場合、通常は Application.WorksheetFunction を利用できます。
WorksheetFunction.Sum(Range("A1:A3"))
しかし、今回確認したBeta版では、新しい4関数(FLATTEN/HAS/HASANY/HASALL)は WorksheetFunctionのメソッドとして登録されていません。
そのため、ここでは Evaluate を使用し、FLATTENをExcelの数式として評価して、その結果をVBAのVariant変数で受け取っています。

FLATTENでセル内配列を指定した階層まで展開し、その評価結果をVBAのVariant変数で受け取れます。
たとえば、
Evaluate("FLATTEN(A1)")
または、Evaluateの省略記法として、
[FLATTEN(A1)]
と記述できます。どちらもワークシート関数を評価する方法です。
以下は、対象のテスト用ブック・シートをアクティブにし、標準モジュール内のSubで実行した例です。A1の数式とブックの互換性バージョンを変更し、Stopで停止させてローカルウィンドウの変数vを確認しました。
参照先が別シートの場合などは、アクティブシートに依存しないよう、例えば ws.Evaluate("FLATTEN(A1)") のように対象シートを明示します(wsはWorksheet変数)。

Excelの新機能「リストとセル内配列」

ActiveWorkbook.CompatibilityVersion = 3
Range("A1").Formula2Local = "={{{1,2,{31;32}};{4,5,{61;62}}}}"
Dim v: v = [FLATTEN(A1)]
Stop

■ levelsを指定した場合のVBAでの取得結果
上のコードではFLATTENの第3引数levelsを省略しているため、1階層だけが展開されます。
さらに内側にある配列は、Variant変数vの要素として入れ子のまま残ります。
実際に、この例では v(1,3)(2,1) で 32 を取得できました。
一方、上のコードの代入行を次のように変更すると、2階層目まで展開されます。
v = [FLATTEN(A1,,2)]
この例では、4行3列のVariant配列が返りました。不揃いな配列の不足部分にはpad_valueが適用され、省略時は#N/Aとなり、VBAのローカルウィンドウではエラー 2042と表示されました。
ここでの「エラー 2042」はマクロが実行時エラーで停止したという意味ではなく、取得した配列の要素に#N/A相当のエラー値が格納されているという意味です。
つまり、VBAからEvaluateで取得する場合も、levelsとpad_valueの指定によって、取得する配列の構造や要素が変わります。以上は今回のBeta版での実機確認結果です。

Excelの新機能「リストとセル内配列」
ActiveWorkbook.CompatibilityVersion = 3
Range("A1").Formula2Local = "={{{1,2,{31;32};4,5,{61;62}}}}"
Dim v: v = [FLATTEN(A1,,2)]
Stop

■ VBAで扱う場合の使い分け
配列の形状や入れ子の深さが明確で、展開後も行列が揃う定型の配列であれば、FLATTENのlevelsを指定し、通常の2次元配列として取得した方が扱いやすい場合があります。
一方、入れ子の深さや要素数が一定でないジャグ配列(不揃いの配列)などでは、levelsを省略し、内側の配列を残した状態で取得する方が柔軟に処理できます。

今回の例では、v = [FLATTEN(A1)] として取得すれば、v(1,3)(2,1) のように、内側の配列要素を直接参照できます。
なお、levels省略時も既定値の1階層は展開されます。
元の配列構造を完全にそのまま取得するという意味ではありません。

要するに、
  • 定型配列: 必要な階層まで展開し、通常の2次元配列として処理する。
  • 不定形・ジャグ配列: 必要以上に展開せず、入れ子構造を利用して処理する。
という使い分けです。

8-3 VBAで扱う場合の注意点

VBAでは、従来の「1セル=1つの値」という前提で書かれたコードが多くあります。
今回の新機能によって、セルそのものが複数値を持つようになるため、既存コードでは想定外の結果になる可能性があります。
Value
Value2
Text
HasFormula
IsEmpty
VarType
TypeName
IsArray
このようなプロパティや判定関数でセル内配列を扱う場合は、返される値や型を確認する必要があります。
今回のValue / Value2のように、従来の1セルの値を前提とした処理では注意が必要です。


9. 現時点での機能制限

今回の機能はまだPreview段階であり、Excelの既存機能すべてが新しいデータ構造へ対応しているわけではありません。
Microsoftからは、現時点で次の制限が案内されています。
  • 条件付き書式は、数式を使わない限り配列内部の値を調べない。
  • データの入力規則では、リストや配列をドロップダウン項目として使用できない。
  • グラフは、セル内配列を複数のデータ点として展開しない。
  • ピボットテーブルは、配列値を元データとして読み込まない。
  • Power Queryは、配列値を持つ列の読み込み・出力に対応していない。
  • 検索と置換では、リストや配列内の個々の項目を置換できない。

以上は2026年9月時点にMicrosoftが案内している制限です。正式提供までに対応状況が変わる可能性があります。
たとえば、セル内配列を作っただけでは、グラフの複数のデータ点として自動的に展開されません。必要に応じてFLATTENなどで通常のセル範囲へ展開してから、既存機能に渡す方法を検討します。ただし、展開すればすべての機能で完全に対応するという意味ではありません。

セル側のデータ構造が拡張された
          ↓
既存機能側の対応はまだ途中


10. 対応バージョンとBeta版について

2026年9月時点では、Windows版とMac版のMicrosoft 365 Beta Channel向けに段階的に提供されています。
Microsoftが案内している対象バージョンは次の通りです。
Windows
Version 2610
Build 20520.20000 以降

Mac
Version 16.114
Build 26092111 以降

■ 本稿の実機検証環境(上記の提供開始条件とは別)
Windows版 Microsoft Excel for Microsoft 365
バージョン2610(ビルド20522.20000)/64ビット
日本語Windows環境、リスト区切り文字はカンマ(,)

ただし、段階的にロールアウトされるため、同じBuildを使用していても機能がまだ表示されない場合があります。

また、今回の公式発表で対象として明示されているのはWindows / MacのBeta Channelです。
Excel for the web、iOS、Android、Current Channelなどへの一般提供時期は、今回の発表では示されていません。

Preview機能では、品質や性能の確認のため、提供が一時停止されたり、仕様が変更されたり、まれに機能そのものが取り下げられる場合もあります。
正式リリース時には、本稿の内容についても改めて確認する必要があります。


11. まとめ

今回追加された内容を整理すると、次のようになります。

追加機能
・リスト(Ctrl+J)
・セル内配列
・入れ子配列
・互換性バージョン3

追加関数
・FLATTEN
・HAS
・HASANY
・HASALL

VBA
・セル内配列専用の新しいVBA機能は現時点では確認できない
・今回確認したBeta版では、Value / Value2はEmpty、Textは表示文字列
・FLATTENをEvaluateして配列として扱う方法がある

今回の新機能で最も大きなポイントは、4つの関数が追加されたことだけではありません。
これまでの、
1セル = 1つの値
という考え方に、
1セル = 複数の値
という新しい選択肢が加わったことです。
動的配列では、
1つの数式で配列を計算
    ↓
必要に応じてスピルで複数セルへ展開
する仕組みが追加されました。
今回はさらに、
配列そのもの
    ↓
1つのセルに保持
できるようになりました。
まだBeta版であり、周辺機能の対応も途中ですが、Excelにおける「セルの値」そのものの考え方を広げる大きな変更です。


12. 参考URL

本稿の作成にあたって参照した主な資料です。

■ Microsoft 365 Insider Blog
Put multiple values in one cell with lists and arrays in Excel
2026-09-24
https://techcommunity.microsoft.com/blog/microsoft365insiderblog/put-multiple-values-in-one-cell-with-lists-and-arrays-in-excel/4559395

リスト、Ctrl+J、カンマ/セミコロン、フィルター、セル内配列、{ }、入れ子配列、FLATTEN / HAS / HASANY / HASALL、Compatibility Version 3、既知の制限、対応Buildなど、本稿の主要な一次情報です。

■ Microsoft Excel Blog
Excel now supports multiple values in a single cell
2026-09-24
https://techcommunity.microsoft.com/blog/excelblog/excel-now-supports-multiple-values-in-a-single-cell/4549756

実務での利用イメージなどを確認する補助資料として参照しました。

■ Microsoft Support
Compatibility Versions
https://support.microsoft.com/ja-jp/excel/compatibility-versions

互換性バージョンがブック単位であること、設定場所、Version 1 / 2の仕様を確認できます。2026年9月時点ではVersion 3の詳細はまだ反映されていません。

■ Microsoft Learn
Range.Value property (Excel)
https://learn.microsoft.com/en-us/office/vba/api/excel.range.value

Range.Value2 property (Excel)
https://learn.microsoft.com/en-us/office/vba/api/excel.range.value2

Range.Text property (Excel)
https://learn.microsoft.com/en-us/office/vba/api/excel.range.text

これらは既存のRangeプロパティの仕様確認に使用しました。
新しいリストやセル内配列に対するVBAの具体的な挙動は、2026年9月時点では公式ドキュメントに十分な説明がないため、本稿ではBeta版Excelの実機確認結果も併記します。




新着記事NEW ・・・新着記事一覧を見る

Excelの新機能「リストとセル内配列」:1つのセルに複数の値|エクセル入門(2026-09-28)
Excel関数クロスワード(2026-09-26)
Excelショートカットキークイズ(2026-09-23)
Excel関数名クイズ(2026-09-21)
気ままに一手|リレー将棋(2026-09-20)
ITエンジニアがトラブルを避けるための法律・契約入門|エクセル雑感(2026-09-18)
ITエンジニアなら知らないと恥ずかしい数学20選|エクセル雑感(2026-09-17)
ITエンジニアのための税金と社会保険のお話|エクセル雑感(2026-09-15)
ITエンジニアのための経理・会計・簿記入門|エクセル雑感(2026-09-12)
「Python in Excel」入門:コードを読むための基礎知識|エクセル関数応用(2026-09-10)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.Excelショートカットキー一覧|Excelリファレンス
5.RangeとCellsの使い方|VBA入門
6.FILTER関数(範囲をフィルター処理)|エクセル入門
7.マクロとは?VBAとは?VBAでできること|VBA入門
8.繰り返し処理(For Next)|VBA入門
9.メッセージボックス(MsgBox関数)|VBA入門
10.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ