指定した文字列を含むデータを抽出するExcelの計算式の書き方を教えていただきました。
要するに、オートフィルタで「文字列を含む」と指定するのと同じことを関数で行いたいのですが、以前は下の記事のようにもっと複雑な計算式を書いていました。
JDLIBEX出納帳の売掛金入力・買掛金入力(Excelで相手先名称の一部からコードを検索する)
次のような簡単な式で書けます。
=FILTER(A:B,IFERROR(FIND(G1,B:B),0),”該当なし”)
A列にコード、B列に名称が入力されているとして、G1セルに入力した文字列がB列に含まれているデータだけを抽出して表示してくれます。(計算式は1か所にだけ書けばExcelのスピルによって右方向や下方向に展開されます)
こういう書き方ができる、ということに大変驚きました。
ポイントは2つあると思います。
ひとつは、FILTER関数の第一引数も第二引数も配列である、ということ。
もうひとつは、FIND関数の第二引数にセル範囲を指定することができ、その結果は配列で返される、ということです。
=FILTER(A:B,IFERROR(FIND(G1,B:B),0),”該当なし”) の IFERROR(FIND(G1,B:B),0) の部分は、G1セルに入力した文字列が1番目にあれば1、3番目にあれば3、文字列が含まれていなければエラーになるので0が返される配列になっています。
{1;3;0;······}
この配列の値が0でないものをFILTER関数で抽出している、ということになるかと思います。