ITライター 立山秀利
指定した店舗や顧客の売上など、既存の表から条件に合致するデータをすべて抽出したいなら、FILTER関数を使うのが手軽だ。今回はFILTER関数の基本を解説する。
FILTER関数は一言で表せば、「フィルター」機能の関数版である。同関数の例として、図1のような表を用いるとする。A~E列に店舗別の売上データが入力されている。この表から、G2セルに入力した店舗に該当する売上データをすべて抽出したいとする。ただし、A列「店舗」を除いたB列「商品」~E列「計」のみを抽出する。抽出先はG5~J5セル以降の行とする。
図1
ここで利用するのがFILTER関数である。指定した条件に合致するデータをすべて抽出する関数だ。基本的な書式は以下のとおり。
----------------------------
FILTER(配列, 含む)
----------------------------
引数「配列」には、抽出対象のデータのセル範囲を指定する。引数「含む」には抽出条件を指定する。この抽出条件は「条件のセル範囲 = 値」という式の形式で指定する(以降、「条件式」と呼ぶ)。
これら引数の指定方法は具体例を見た方がわかりやすいので、今回の例で実際にFILTER関数を使ってみよう。引数「配列」には、抽出対象の表のセル範囲ということで、売上の表でB列「商品」~E列「計」の範囲で、かつ、見出し行を除いたB2~E40セルを指定する。
次は引数「含む」だ。条件式「条件のセル範囲 = 値」をどう指定すればよいか見ていこう。「条件のセル範囲」には、店舗のデータが入ったA2~A40セルを指定する。「値」には、目的の店舗が入力されたG2セルを指定すればよい。以上を踏まえると、目的のFILTER関数は以下となる。
-------------------------------------------
=FILTER(B2:E40,A2:A40=G2)
-------------------------------------------
上記のFILTER関数を入力するセルは、抽出先となるセル範囲の左上に位置するG5セルだ(図2)。
図2
実際に入力したあと[Enter]を押して確定すると、G2セルの店舗に該当する売上データが抽出される(図3)。
図3
ここで注目してほしいのが、FILTER関数を入力したのはG5セルだけにもかかわらず、抽出したデータがJ11セルまでの範囲におよんでいる点である。これは「スピル」という機能による結果だ。FILTER関数は抽出したデータのセル範囲を返す関数である。そのセル範囲の行数と列数に応じて、G5セルより右の列および下の行のセルにあふれるかたちで、抽出したデータが配置される。このように関数の結果(戻り値)が複数のセルに配置される機能がスピルだ。
参考までに、スピル機能によって埋められたセルの数式バーには、元のセルの数式が半透明の文字で表示される。今回の例では、例えばJ11セルを選択すると、数式バーにはG2セルに入力された「=FILTER(B2:E40,A2:A40=G2)」が半透明の文字で表示される(図4)。数式に誤りがないかチェックする際、この点を頭に入れておかないと混乱してしまうので注意しよう。
図4
このようにFILTER関数を使えば、1つのセルに入力するだけで、指定した条件に該当するデータを表のかたちで抽出できる。レポートや請求書の作成などに重宝するだろう。次回はFILTER関数の応用的な使い方を紹介する。
立山秀利(たてやま・ひでとし)
カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。
(監修:日経BPコンサルティング)