Google Sheetsで複数結果をユニークに改行表示!もうVLOOKUP/XLOOKUPで悩まない!

Google Sheets(スプレッドシート)で特定の条件に合う複数のデータをまとめて表示したいのに、VLOOKUPXLOOKUPだと最初の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
と表示されるようになります!

実践!スプレッドシートでの設定手順

この関数をスプレッドシートに設定する手順は以下の通りです。

  1. データの準備: 上記の例のように、データがスプレッドシートに入力されていることを確認してください。例ではB列が社員名、C列が担当プロジェクトです。
  2. 検索条件のセル: 検索したい社員名(例: “佐藤”)をどこかのセル(例: B3)に入力します。
  3. 関数を入力: 結果を表示したいセル(例: D3)に、以下の関数を入力します。
    =TEXTJOIN(CHAR(10), TRUE, UNIQUE(FILTER($C$27:$C, $B$27:$B=B3)))
    • $C$27:$C は、結果として表示したい「担当プロジェクト」の列の範囲を指定します。
    • $B$27:$B は、検索条件となる「社員名」の列の範囲を指定します。
    • B3 は、検索条件(例: “佐藤”)が入力されているセルです。あなたのシートに合わせて適宜変更してください。
  4. セルの書式設定: 関数を入力したセル(例: 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作業が、もっと効率的になることを願っています!

コメント