いまさら聞けないExcelの使い方講座

【Excel】特定項目別に表を分割するならコピペじゃ非効率 ~簡単&効率的にするには?

カテゴリごとに分類する時は「FILTER関数」が便利

目視で確認? フィルター&コピペはもう卒業

 作成済みの表から一部の情報を取り出す作業がありますよね。例えば、カテゴリごとに別々の表に振り分けたいようなケースです。フィルターで絞り込んでコピー&ペーストといった操作を思いつきますが、カテゴリの数だけ同じ作業を繰り返すのは非効率です。

例えば、システム別に利用している人を取り出したい時どうしますか?
フィルターで絞り込んでコピペの操作を繰り返すのはあまりスマートではありません

 このような作業は「FILTER関数」を使うのが簡単です。名前の通りフィルターをかける関数なので、あまり注目されませんが、いろいろなシーンで活用できる優れものです。実際に使ってサッと必要なデータを取り出してみましょう。

見出しを条件にして取り出す

 FILTER関数の構文は以下の通りです。取り出したいセル範囲を引数[配列]に指定します。ここでは[氏名]列だけを取り出したいので、セルB2~B31となります。[含む](条件)の指定方法がポイントです。例えば、[システム名]列の中から、「営業支援ツール」を検索したい場合は「$D$2:$D$31=G1」のように指定します。

FILTER関数の構文。引数[配列]に取り出したいセル範囲を指定します。[含む]には[配列]から取り出す条件を指定します。[空の場合]は条件に一致しない場合に表示する値を指定します(省略可)
セルG1~I1にはシステム名を入力してあります。セルG2に「=FILTER($B$2:$B$31,$D$2:$D$31=G1)」(①)と入力します。セルH2、I2にコピーすることを考慮して絶対参照で指定しています
結果はスピルで表示されます(②)
セルH2,I2にコピーすれば完成です

複数列を取り出す

 例えば、氏名と利用権限のように離れたセル範囲を同時に取り出したい場合は「HSTACK関数」を利用します。構文は以下の通り。指定した[配列](セル範囲)を横方向に並べます。

HSTACK関数の構文。引数[配列]に指定したセル範囲を横方向に並べて表示します

 数式は以下のように、FILTER関数の[配列]にHSTACK関数を組み合わせます。

=FILTER(HSTACK($B$2:$B$31,E2:E31),$D$2:$D$31=G1)
「=FILTER(HSTACK($B$2:$B$31,E2:E31),$D$2:$D$31=G1)」(③)と入力すると、氏名と利用権限を同時に取り出せます

条件を追加する

 FILTER関数は、複数の条件を指定することもできます。[含む](条件)を「*」でつなげるだけで、AND条件となります。例えば、システム名と利用権限を条件にする場合は、以下のように指定します。

セルG3の数式
=FILTER($B$2:$B$31,($D$2:$D$31=$G$1)*($E$2:$E$31=G2))
セルG1には「営業支援ツール」、セルG2には「管理者」と入力してあります。セルG3に「=FILTER($B$2:$B$31,($D$2:$D$31=$G$1)*($E$2:$E$31=G2))」(④)と入力すると、「営業支援ツール」かつ「管理者」の氏名が表示されます。セルH3の数式では「$E$2:$E$31=H2」、I3の数式では「$E$2:$E$31=I2」となっています

 ちなみに、OR条件の場合は「+」でつなげて、引数[含む]に指定します。フィルターボタンを使った絞り込みよりも、FILTER関数のほうが便利なこともあるので、ぜひ活用してください。