条件で文字列を統合する技 - Vol.33 -
4月 09, 2018
スゴ技会計士からの挑戦状 VOL.33
┃条件で文字列を統合する技
条件に合致する文字列だけ結合したい、というのは意外と多い質問です。例えば以下の問題のようなケースです。
【問題】難易度★★★
C列以降でアサインされているメンバーを、B列に表示してください
【ヒント】
私が思いつく解答は力技です。
エクセル関数で文字列を結合するには、今のところ地道にひとつひとつ文字列を結合していくしかありません。
グーグル関数であればもっとうまくできるのですが...
基本的な考え方は簡単です。
もしフラグがたっていたら2行目の名前を結合し、フラグがたっていなければ空白を結合するということを人数分繰り返すだけです。
作業領域を贅沢に使って、分かりやすく作成しましょう。
【解答例】
区切り文字はあとで簡単に変更できるように、別セルに書き出しておきます。
名前は区切り文字と結合して2行目に作成しておきます。
この時H列は空白にしておいてください。
ここまで準備ができたら、IF関数を使って場合分けをしながら表示する文字列を結合します。
常に前列で作成した文字列に追加していきます。
アサインが空白であれば空白を、そうでなければ2行目の文字列を追加します。
=H3&IF(C3="","",I$2)
アサインにフラグがたっているので「一木、」と表示されました。
あとはこの数式をコピペすればほぼ完成です。
最終のL列に表示すべき文字列が完成しています。
【見た目を工夫する】
最後に見た目を整えて完成です。
文字列操作関数を活用して、最後の区切り文字を除いて表示します。
文字列の長さから1を引いた長さだけ文字列から切り取るのです。
=LEFT(L3,LEN(L3)-$J$1)
【グーグルでは】
ちなみにグーグル関数を使うとこれだけでできます。
=concatenate(ArrayFormula(IF(C3:F3=1,C2:F2&",","")))
エクセルを使っていて、なんでこんなことができないんだろう、と疑問に思っていることがグーグルではできることが多いです。
エクセルもそのうち追随すると思われます。