Google Sheets(スプレッドシート)で特定の条件に合う複数のデータをまとめて表示したいのに、VLOOKUP
やXLOOKUP
だと最初の1件しか取れない…しかも重複した値を除外したい…そんなお悩みはありませんか?
この記事では、そんな時に役立つGoogle Sheetsの神ワザ関数をご紹介します。これを使えば、条件に一致するすべての値を、重複なく、しかも改行して1つのセルにスッキリ表示できます。
こんな時に役立つ!具体例を見てみよう
例えば、以下のような社員の部署と担当プロジェクトのデータがあるとします。
社員名 (B列) 担当プロジェクト (C列)
佐藤 プロジェクトA
山田 プロジェクトB
佐藤 プロジェクトC
田中 プロジェクトA
山田 プロジェクトA
佐藤 プロジェクトB
Google スプレッドシートにエクスポート
ここで、「佐藤さんが担当しているユニークなプロジェクト名だけを、1つのセルにまとめて表示したい!」と思ったらどうしますか?
通常のXLOOKUP
だと「プロジェクトA」しか表示されませんし、手作業で探してまとめるのは大変ですよね。
魔法の関数:TEXTJOIN, UNIQUE, FILTER の組み合わせ!
この問題を解決するのが、以下の関数です。
=TEXTJOIN(CHAR(10), TRUE, UNIQUE(FILTER($C$27:$C, $B$27:$B=B3)))
この関数を分解して見ていきましょう。
1. FILTER($C:$C, $B:$B=B3)
- これは「もしB列($B$27:$B)の値が、B3セルに入力されている値(例: “佐藤”)と同じだったら、C列($C$27:$C)の値を全部取ってきてね」という指示です。
- この時点では、「プロジェクトA」「プロジェクトC」「プロジェクトB」のように、重複を含んだリストが抽出されます。
2. UNIQUE(…)
FILTER
で抽出されたリストを、UNIQUE
関数に渡します。- 「そのリストの中から、重複している値を全部取り除いて、ユニークな値だけにしてね」という指示です。
- この結果、「プロジェクトA」「プロジェクトC」「プロジェクトB」という重複のないリストが残ります。
3. TEXTJOIN(CHAR(10), TRUE, …)
- 最後に、
UNIQUE
で精製されたユニークなリストをTEXTJOIN
関数に渡します。 CHAR(10)
は改行コードを意味します。つまり、「リストの各項目を改行しながら、1つの文字列として結合してね」という指示になります。TRUE
は、もし空白のセルがあっても無視するという設定です。
この関数を使えば、入力規則で「佐藤」を選択しただけで、1つのセルに
プロジェクトA
プロジェクトC
プロジェクトB
と表示されるようになります!
実践!スプレッドシートでの設定手順
この関数をスプレッドシートに設定する手順は以下の通りです。
- データの準備: 上記の例のように、データがスプレッドシートに入力されていることを確認してください。例ではB列が社員名、C列が担当プロジェクトです。
- 検索条件のセル: 検索したい社員名(例: “佐藤”)をどこかのセル(例: B3)に入力します。
- 関数を入力: 結果を表示したいセル(例: D3)に、以下の関数を入力します。
=TEXTJOIN(CHAR(10), TRUE, UNIQUE(FILTER($C$27:$C, $B$27:$B=B3)))
$C$27:$C
は、結果として表示したい「担当プロジェクト」の列の範囲を指定します。$B$27:$B
は、検索条件となる「社員名」の列の範囲を指定します。- B3 は、検索条件(例: “佐藤”)が入力されているセルです。あなたのシートに合わせて適宜変更してください。
- セルの書式設定: 関数を入力したセル(例: D3)を選択し、メニューバーの**「表示形式」→「テキストの折り返し」→「折り返す」** を選択してください。これを設定しないと、改行が正しく表示されず、1行にまとまって表示されてしまいます。
これで設定は完了です!B3セルの値を変更すると、それに応じてD3セルの表示もリアルタイムで更新されます。
代替案:QUERY関数を使う方法
QUERY関数も、データの抽出と重複排除を同時に行える強力な選択肢です。
=TEXTJOIN(CHAR(10), TRUE, QUERY($B$27:$C, "SELECT DISTINCT C WHERE B = '"&B3&"'", 0))
この関数では、QUERY内のSELECT DISTINCT CでC列から重複を排除した一意な値を選択し、WHERE B = ‘”&B3&”‘でB3セルの条件に一致するデータを抽出します。結果は同様にTEXTJOINで改行結合されます。
どちらの方法も強力ですが、直感的なのはFILTERとUNIQUEの組み合わせでしょう。
まとめ:もう複雑な関数で悩まない!
今回ご紹介した
=TEXTJOIN(CHAR(10), TRUE, UNIQUE(FILTER(結果範囲, 条件範囲=条件セル)))
は、Google Sheetsで複数条件に一致するユニークなデータを改行して表示するための非常に強力で便利な組み合わせです。
VLOOKUPやXLOOKUPでは対応できない、動的なリスト表示やレポート作成の際にぜひ活用してみてください。
あなたのGoogle Sheets作業が、もっと効率的になることを願っています!
コメント