2025年1月20日【ID:0】
【Excel】該当する氏名をカンマ区切りで抽出
以下の表は、氏名ごとに講座名を割り当てた表になります。

こちらの表を例に、以下のように講座名ごとで氏名をカンマ区切りで簡単に抽出する方法について解説していきます。

こちらの方法は、数式のみで実現できます。
手順1: IF関数で条件を設定する
まず、特定の講座名に対し、該当する氏名を抽出する数式を、IF関数を用いて作成します。
IF関数の使い方は、以下になります。
=IF(論理式, 値が真の場合, 値が偽の場合)
// 指定した条件([論理式])を満たしている場合は[値が真の場合]を返す
// 指定した条件([論理式])を満たしていない場合は[値が偽の場合]を返す
IF関数を用いて、まずは講座名「A」と一致する氏名のみを抽出します。
こちらでは、以下の表のセルC2に数式を入力します。

入力する数式は、以下になります。
=IF($C$7:$C$15=B2,$B$7:$B$15,"")
// 表の講座名と氏名の範囲は「$」で固定する
// $C$7:$C$15: 講座名が入力されている範囲(絶対参照)
// B2: 比較対象となる講座名
// $B$7:$B$15: 氏名が入力されている範囲(絶対参照)
実際に数式を入力すると、以下のように氏名が抽出されます。

※こちらではスピルの機能を活用して抽出内容を確認するため、他の列に数式を入力しています。スピルに対応していないバージョンの場合は、上記のように確認することはできません。
上記のように条件が一致する場合に氏名を返し、一致しない場合に空白を返します。
手順2: TEXTJOIN関数でカンマ区切りにする
次に、IF関数で抽出された氏名をカンマ区切りでまとめます。
その際に使用する関数は、TEXTJOIN関数になります。
TEXTJOIN関数の使い方は、以下になります。
=TEXTJOIN(区切り文字, 空のセルは無視, テキスト1, [テキスト2], …)
// 指定した[テキスト]を指定した[区切り文字]で結合して返す
// 指定した[テキスト]に空白が含まれる場合に、そのセルを無視して結合するかどうかを[空のセルは無視]で指定する(TRUE:無視する、FALSE:無視しない)
実際に活用すると、以下のような数式になります。
=TEXTJOIN(",",TRUE,IF($C$7:$C$15=B2,$B$7:$B$15,""))
// ",": カンマで区切る設定
// TRUE: 空白セルを無視
// IF関数: 条件に一致する氏名を抽出
この数式をセルC2に入力することで、講座名「A」に関しては、以下のように該当する氏名をカンマ区切りで抽出することができます。

スピルに対応していない環境の場合は、数式を入力後に「Ctrl + Shift + Enter」で確定し、以下のような配列数式として入力する必要があります。
{=TEXTJOIN(",",TRUE,IF($C$7:$C$15=B2,$B$7:$B$15,""))}
※結合されたセルでは配列数式が使えないため注意してください。
手順3: 数式のコピー
最後に、先頭に入力した数式を下の行までコピーすることで、以下のように、講座名ごとで氏名をカンマ区切りで抽出することができます。

シンプルな関数のみで実現できるので、ぜひ試してみてください。