動的配列・スピル入門
UNIQUE関数を見て理解する
配列から重複する行や列を除き、一意のデータだけを新しい配列として返す関数です。
3つのポイント
- 重複を調べる表全体を指定する
- 比較する向きを行または列で切り替える
- 一意の結果を複数セルへスピルする
社員データの重複行・重複列を条件別に取り除く
サンプル数式
- 配列
- 列を比較
- 1回だけ出現
いまの結果:
先頭行:「田中」 | 「営業」 | 「営業」
入力・条件:3項目
- 配列A2:C5(4行 × 3列)先頭行:「田中」 | 「営業」 | 「営業」
- 列を比較E2:FALSE
- 1回だけ出現F2:FALSE
重複を取り除く条件を適用した結果です。
サンプルデータ
※ Excel と Google スプレッドシートで結果や挙動が異なる場合、Excel の仕様を基準にしています。
| A | B | C | D | E | F | G | H | I | J | |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 社員名 | 所属部署 | 担当部署 | 列を比較 | 1回だけ出現 | 結果 | ||||
| 2 | 田中 | 営業 | 営業 | 田中 | 営業 | 営業 | ||||
| 3 | 佐藤 | 開発 | 開発 | 佐藤 | 開発 | 開発 | ||||
| 4 | 田中 | 営業 | 営業 | 鈴木 | 人事 | 人事 | ||||
| 5 | 鈴木 | 人事 | 人事 |
E2、F2に値を入力すると、結果と処理順が変わります。
3つの引数
色付きの丸数字は、サンプル数式と引数ガイドで同じ引数を示しています。表にも同じ番号があれば、その引数で指定しているセルを示します。
A2:C5表のセル: A2:C5重複を調べる社員データです。同じ社員レコードが1件重複し、所属部署と担当部署はこの例では同じ内容です。
E2表のセル: E2FALSEでは行どうし、TRUEでは列どうしを比較して重複を判定します。
F2表のセル: F2FALSEでは重複を1件にまとめ、TRUEでは1回だけ現れる行または列だけを返します。
この数式を日本語にすると
A2:C5の社員データには、田中さんの行が重複しており、所属部署と担当部署の2列はこの例では同じ内容です。E2で行と列のどちらを比較するか、F2で重複を1件にまとめるか1回だけ現れるものだけ残すかを切り替えます。
この説明は、最初に表示されているサンプルデータをもとにしています。入力値を変更しても説明文は変わりません。
処理の流れ
手順1〜4を順番に確認しましょう。表内の小さな角丸数字は、対応する手順を示します。
配列を確認する
A2B2C2A3B3C3A4B4C4A5B5C5A2:C5を重複判定の対象にします。
比較する向きを確認する
E2FALSEとして評価されるため、行どうしを比較します。
残すデータの条件を確認する
F2FALSEとして評価されるため、重複する行は最初の1件だけを残します。
重複をまとめて一意の配列を返す
H2:J4重複する行を1件にまとめ、3行×3列の結果をH2:J4へスピルします。
対応アプリ
- Excel
- Google スプレッドシート
関数自体が対応するアプリです。教材例の数式や再計算が、両アプリで同じように動くことを保証するものではありません。
この例の注意点
- UNIQUEは同じ行や列が複数あっても、通常は最初に現れた1件だけを結果に残します。
- 第2引数のby_colがFALSEなら行どうし、TRUEなら列どうしを比較します。
- 第3引数のexactly_onceがFALSEなら重複を1件にまとめ、TRUEなら1回だけ現れる行または列だけを返します。
- この教材では取込データに同じ社員レコードが重複しているケースと、所属部署と担当部署の内容が全員同じケースを使い、4つの組み合わせで結果がどう変わるか確認できます。
- 結果は条件に応じた行数・列数へ自動的にスピルします。
一般構文
対応:Excel / Google スプレッドシート ・ 構文:構文差あり
- Google公式構文のby_columnとexactly_onceには[]がありませんが、本文に既定値が記載されています。
- 文字列の重複判定では、Excelは大文字小文字や全角・半角の幅を同一視するケースがありますが、Google スプレッドシートでは別値として扱うケースがあります。
- by_colに式由来の空文字列など一部の値を渡した場合、Excelは#VALUE!になりますが、Google スプレッドシートでは結果を返すケースがあります。
Excel
=UNIQUE(array, [by_col], [exactly_once])[] は省略できる引数です。
省略時
by_col→ FALSE省略すると、行どうしを比較します。exactly_once→ FALSE省略すると、1回だけの値に限定せず、重複を除いた値を返します。
Google スプレッドシート
=UNIQUE(range, by_column, exactly_once)[] がない引数も、公式本文で省略時の扱いが説明されている場合があります。
省略時
by_column→ FALSE省略すると、行を比較して重複を除きます。exactly_once→ FALSE省略すると、重複した値も1件にまとめて返します。
公式資料・確認範囲
公式資料
- Microsoft Excel 公式構文
- Google スプレッドシート 公式対応状況・構文・省略時の扱い
実機確認
- Excel 2021 / Google スプレッドシート計算結果・入力の扱い・エラーを確認済み
未確認
配列展開
次に学ぶ関数
SORT
重複を除いた一覧の次は、その一覧を並べ替えます。
次に学ぶ