スプレッドシートの作業ではデータを結合したいことがあるかもしれません。スプレッドシートのセル内のテキストを結合できると、効率よくデータをまとめられますよね。スプレッドシートの複数セルをまとめることは関数など他の参照が来た時のエラーを防ぐ意味でも有効です。今回は、スプレッドシートでの結合によってフィルタのエラーを解消する事例として、textjoin の使い方と filter との組み合わせをご紹介します。
フィルタ関数は範囲の中で指定された条件に絞り込み、該当する行または列を返す機能です。構文は、『=FILTER(絞り込みをする範囲,条件)』となります。たとえば、出退勤時間に応じて勤務している日付を取り出してみました。該当する文字列や数字がセルごと取り出されていくので、関数そのものは一箇所にしか入力していなくても、該当する記号が調べられている方向に順番に並べられていきます。縦向きにして同じ操作を行った場合には縦向きにアルファベットが出てきますので、気になる場合には試されても良いでしょう。
関数フィルタについて詳細はこちら⤵
このフィルタ関数のデメリットとして、条件に当てはまるものの数だけ調べる方向と同じ向きに要素が順番に表示されていくことがあります。たとえば、フィルタが行方向に調べたとして、結果を入力する右隣のセルに別の値が入力されていると、その値が消えるためエラーが出てしまいました(単に上書きされて消えてしまうこともあるかもしれません)。
その対処法として、スプレッドシートに出てくる配列を結合することが挙げられます。フィルタを使ったとしても、その結果をまとめられるため、他のセルに影響を及ぼすことがありません。その作業で使う関数について次の項目でみていきましょう。
TEXTJOINは、スプレッドシートの複数セルの文字列や数値を1つのセルにまとめる関数です。スプレッドシートで他のセルの値を&でつなげるのと同じ機能があります。&を使って結合する場合は、『=&』などとスプレッドシートの複数セルを参照することでできますが、TEXTJOIN関数はどのように使うのかをみていきましょう。
TEXTJOINの基本的な書式の形は、『=TEXTJOIN(区切り文字,空白のセルを無視するか,セル範囲または値)』です。「空白のセルを無視するか」ではTRUEかFALSEを選び、TRUEの場合は特に参照セルが空欄のときに詰めて表示されます。「区切り文字」は、スプレッドシートで文字列を結合する際に間に何か入れるかをダブルクォーテーション””で囲んで表示します。何もなければ””で問題ないでしょう。3つ目の要素のところに結合したい内容を含めます。たとえば『=TEXTJOIN(“”,TRUE,”スプレッドシート”,”複数セル”,”結合”)』と入力すると、「スプレッドシート複数セル結合」と三つの単語がつながりました。
スプレッドシートで参照セルの結合を文字の代わりにしたい場合、『=TEXTJOIN(“”,TRUE,D5:F5)』などとすればできます。この場合も空白(空の文字列)を無視したい場合はTRUEにしておくことで可能です。
スプレッドシートでカンマ区切りで結合したい場合には、「区切り文字」のところに『”,”』と入力しましょう。たとえば、『=TEXTJOIN(“,”,TRUE,”スプレッドシート”,”複数セル”,”結合”)』と入力すると、今度は「スプレッドシート,複数セル,結合」となります。
また、textjoinでスプレッドシートのデータを結合したとき改行して表示したい場合は、「区切り文字」のところに改行を表す関数を入力しましょう。『=TEXTJOIN(CHAR(10),TRUE,D5:F5)』などとすると、参照または文字列を改行して表示します。もし式が間違っていないのに折り返しができない場合は、書式設定を見てテキストを折り返す設定を変更して変化があるかを調べてみましょう。
スプレッドシートでは、FILTER関数で抽出した文字列に対してこのTEXTJOIN関数で処理することで、一つにまとめて表示できます。書式は、『=TEXTJOIN(“,”,TRUE,FILTER(取り出す範囲,調べる範囲とその条件))』です。先ほどまで文字列やスプレッドシートの複数セルを参照していた3つ目の引数にFILTER関数が代入されました。
例では『=TEXTJOIN(“,”,TRUE,FILTER(P3:AT3,P4:AT4<>””,P6:AT6<>””))』です。Googleスプレッドシート上のP列からAT列を調べて、4行目も6行目も空白ではない(「””」が空白で「<>」が「≠」の意味)ものに対応する3行目の要素を取り出し、空欄は無視して間に「,」を入れてまとめて表示する指令を出しています。結果的に、空白ではない場所のみ左側の数字「1,2,6,13,15」が一つのセルで結合されました。
今回は、スプレッドシートの複数セルをまとめる関数として、textjoin の使い方をご紹介しました。スプレッドシートのセルの結合をする際には間に文字やカンマなどを入れられる点も押さえておくと幅が拡がるかもしれません。特にフィルタなど何か他のセルを参照して隣のセルにも書き込みの可能性がある場合には、textjoinを含めることで上書きを避けられるのでおすすめです。最後までお読みいただきありがとうございました。
関連記事:TEXTJOINで文字をつなぐ