Excelの動的配列を徹底解説:ONLYOFFICEでの実践例
数百行にわたって数式を手動でコピーしたり、複雑なCtrl+Shift+Enterの配列数式と格闘した経験があるなら、Excelの動的配列はワークフローを大きく変えてくれます。動的配列の数式は1つ入力するだけで、結果に必要な分だけ自動的に展開されます。繰り返し作業も手動更新も不要です。このガイドでは、動的配列について知っておくべきことをすべて解説していきます。

Excelの動的配列とは?
動的配列とは、1つの数式が生成した値の範囲で、結果が隣接する複数のセルに自動的に「スピル(溢れ出す)」するものです。
動的配列が登場する前は、複数のセルに結果を出力するには、数式を手動でコピーするか、レガシーのCSE配列数式(Ctrl+Shift+Enterで入力)を使う必要がありました。CSE配列数式は出力サイズが固定されており、データに合わせて拡張・縮小することができませんでした。
動的配列数式はその制約を完全に取り除きます。数式を入力してEnterを押すだけで、残りはExcelが自動で処理します。元のデータが増えればスピル範囲も自動で広がり、データが減れば縮小します。
例: =SORT(UNIQUE(A2:A100)) と入力するだけで、重複を排除してソートされたリストが1つのセルから生成されます。CSEも作業列も不要です。
動的配列の仕組み:スピルの動作と主要な関数
スピルの動作
動的配列数式が複数の結果を生成すると、Excelはそれらをスピル範囲と呼ばれる連続したブロックに配置します。覚えておくべき点は以下の通りです。
- 数式が入力されるのは左上のセルのみで、残りのセルにはスピルされた値が表示されます。
- スピル範囲は元データの変更に合わせて自動的に更新されます。
- 出力範囲内のいずれかのセルが占有されていると、Excelは#SPILL!エラーを返します。該当セルを空にすることで解消できます。
- #演算子を使うとスピル範囲全体を参照できます。例えば
=SUM(A2#)はA2の数式がスピルした値をすべて合計し、範囲が増減しても自動的に調整されます。 - 動的配列数式はテーブル内では使用できません。通常のセル範囲に配置してください。
主要な動的配列関数
ONLYOFFICEのスプレッドシートエディタを使って、最も重要な関数を見ていきましょう。
1. FILTER — 条件に一致する行を抽出します:
=FILTER(A2:D200, B2:B200="East")

2. UNIQUE — 重複を排除したリストを返します:
=UNIQUE(A1:A8)

3. SORT — 数式で範囲を並べ替えます:
=SORT(A2:A9)

4. SEQUENCE — 連続した数値のグリッドを生成します:
=SEQUENCE(4; 7; 1; 1)

5. RANDARRAY — 範囲にランダムな数値を入力します:
=RANDARRAY(5; 3; 1; 100; 1)

整数を生成するには最後の引数を1に設定します。シートを更新するたびに再計算されます。
6. XLOOKUP — VLOOKUPの現代的な代替で、複数の列を一度に返せます:
=XLOOKUP(G2, A2:A200, B2:D200, "Not found")

結果は自動的に複数の列にスピルされます。検索関数の詳細については、Excel LOOKUP関数ガイドをご覧ください。これらの関数をネストする際は、関数の引数の仕組みを理解しておくと特に役立ちます。
動的配列のメリットと注意点
活用する価値がある理由
- 自動展開 — 手動操作なしで、データのサイズに合わせて出力が調整されます。
- 数式の削減 — 1つの数式が何十ものコピーを置き換え、ファイルの複雑さが軽減されます。
- 可読性の向上 — 500個の同一コピーを追うより、1つのソース数式を確認するほうがはるかに簡単です。
- エラーの削減 — 手動コピーによる参照の破損や微妙な数式のズレが発生しません。
- 組み合わせの柔軟性 — 関数を自然にチェーンできます。例:
=SORT(UNIQUE(FILTER(A2:A100, B2:B100="Q1")))
実用上の注意点
- レイアウトの設計 — 数式の下と右に、スピル範囲のための十分な空白を確保してください。
- 互換性 — これらの関数にはExcel 365・Excel 2021・またはONLYOFFICE Docsが必要です。古いバージョンのExcelには対応していません。
- 大きな範囲 — 列全体に
UNIQUEやFILTERを適用すると再計算が遅くなる場合があります。入力範囲を実際のデータ行に限定しましょう。
動的配列の組み合わせ例
個別の関数に慣れてきたら、動的配列の真の力は組み合わせることで発揮されます。基本を超えた実践的なシナリオを紹介します。
RANDARRAYとRANKによるパフォーマンススコアカード
シナリオ:チームのパフォーマンススコアをシミュレートし、各メンバーに自動でランキング順位を割り当てたい場合です。
A2:A6に従業員名を設定します。
B2に50から100の間のランダムスコアを生成します:
=RANDARRAY(5; 1; 50; 100; 1)

スコアが確定したら、作業中に再計算されないよう値として貼り付けます(Ctrl+Shift+V → 値のみ)。
C2に各スコアのランク順位を割り当てます:
=RANK(B2; $B$2:$B$6; 0)
C6までドラッグします。$で参照範囲を固定することで、すべてのスコアが5人全員と比較されます。固定しないと、各行が自分自身とだけ比較されてしまいます。

結果として、各従業員の名前・スコア・チーム内の順位を示す3列のスコアカードが完成します。スコアが変わるたびに自動更新されます。手動での並べ替えも作業列も不要です。
活用シーン:誰に最も役立つか
データアナリストはFILTER・UNIQUE・SORTを使って、作業列やピボットテーブルなしで自動更新されるサマリーを構築します。
財務チームは新しい取引が追加されると自動的に更新されるレポートを作成し、SEQUENCEで会計期間の構造を管理します。
プロジェクトマネージャーはマクロ不要で、進行中のプロジェクト・担当者・期限超過のタスクを動的にリスト表示するタスクトラッカーを作成できます。
動的配列が活躍する場面:
- 手動更新なしにライブデータを表示するレポートやダッシュボード
- ドロップダウンやサマリー用のユニーク値リスト
- 元データを変更せずに並べ替えやフィルタリングされたビューを作成する場面
- XLOOKUPによる複数列の検索
ONLYOFFICEで動的配列を使い始めましょう
動的配列は現代のスプレッドシート作業における最も実用的なアップグレードのひとつです。1つの数式が何十もの数式を置き換え、結果は自動更新され、ファイルはすっきりとした状態を保てます。
まずは小さな変更から始めてみましょう。VLOOKUPの列をXLOOKUPに置き換えたり、次のドロップダウンにUNIQUEを使ったり、静的なコピー&ペーストの表の代わりにFILTERのサマリーを1つ作ってみたりしてください。スプレッドシートへの考え方がすぐに変わっていきます。
ONLYOFFICE DocSpaceの無料アカウントを作成してオンラインで、またはWindows・Linux・macOS向けの無料デスクトップアプリをダウンロードしてオフラインで、動的配列の全機能を試してみましょう。
ONLYOFFICEの無料アカウントを登録する
オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業

