2024年8月28日【ID:0】
【Excel】該当日の全予定をセル内に改行して抽出
以下のように、セルC2に入力された日付に応じて、該当する予定をセルB5以降の表から検索してセルC3に抽出する仕組みの作成方法について解説していきます。
※セルC3のみに数式が入力されています。
※こちらで使用したファイルは記事の最後にて配布しています。
この仕組みを実現するためには、複数の関数を活用します。
まずは該当する予定を、FILTER関数を活用して全て抽出します。
FILTER関数の使い方は、以下の通りです。
=FILTER(配列, 含む, [空の場合])
// 配列:抽出対象の表
// 含む:抽出条件
// [空の場合]:対象が存在しない場合に表示する値(省略可)
実際に活用すると以下のようになります。
=FILTER(C6:C1000,B6:B1000=C2,"")
// 表の範囲がセルB6からC1000とした場合
少し分かりづらいですが、上記の画像では、該当する予定の2件(プレゼント準備、書類作成)が表示されています。
ちなみに、上記の表ですと3件以上が抽出対象の場合は数式エラーになります。
(セルC5には予め値が入力されているため、数式の結果を展開できずにエラーになります。)
後は、この表示内容を改行して1つのセル内に収めます。
こちらではTEXTJOIN関数を活用して収めていきます。
TEXTJOIN関数の使い方は、以下の通りです。
=TEXTJOIN(区切り文字, 空のセルは無視, テキスト1, [テキスト2, …])
// 区切り文字:複数の値を区切る文字
// 空のセルは無視:対象に空のセルが含まれる場合に含めるかどうか(TURE/FALSE)
// テキスト:対象の文字(離れているセルを参照する場合などは、テキスト2以降も活用)
実際に、カンマ区切りでセル内に収める場合は以下のようになります。
=TEXTJOIN(",",TRUE,FILTER(C6:C1000,B6:B1000=C2,""))
// 空の予定は抽出する必要がないため、[空のセルは無視]にはTRUEを指定
上記の画像のように、セル内に収まって表示されていることが確認できます。
最後にカンマで区切った内容を改行にする必要があります。
こちらではCHAR関数を活用して改行を表示していきます。CHAR関数の使い方は、以下の通りです。
=CHAR(数値)
// 数値:文字コード
改行を表す文字コードは「10」になるため、TEXTJOIN関数の[区切り文字]を「CHAR(10)」に置換します。
=TEXTJOIN(CHAR(10),TRUE,FILTER(C6:C1000,B6:B1000=C2,""))
改行して表示されない場合は、[折り返して全体を表示する]を選択する必要があります。
以上の手順で、該当する日付の全ての予定をセル内に改行して抽出することができます。
▼サンプルファイル▼