こんにちは。
先日、MOS Excel 365 Expertの模擬試験に挑戦中の生徒様が、
「FILTER関数とSORTBY関数って、よく似ていませんか?
試験問題を見た時に、どちらを使えばいいのかわからなくなることがある」
と仰っていました。どちらも新しく追加された動的配列関数(スピル関数)で、表を操作するという共通点から混同しやすいのですが、役割はまったく異なります。
今回は、FILTER関数とSORT関数、それぞれの使い方と、どんな場面で使うのかを解説しますね。
【FILTER関数とは】
条件に一致するデータだけを抽出する関数
◆構文◆
=FILTER(配列,含める,[空の場合])
・配列:表のタイトル行を除いたデータ範囲
・含める:抽出の条件を指定
・[空の場合]:抽出条件に合うデータがなかった場合に表示する値(省略可)
例えば次のような社員一覧があるとします。
氏名 部署 売上
田中 営業部 350
鈴木 総務部 280
佐藤 営業部 420
高橋 経理部 310
伊藤 営業部 260
営業部だけ表示したい場合は、
=FILTER(A2:C6,B2:B6="営業")
結果
氏名 部署 売上
田中 営業 350
佐藤 営業 420
伊藤 営業 260
営業部だけが抽出されます。
※注意:見出し(タイトル行)はあらかじめ入力しておく
FILTER関数ではデータ部分だけ指定します。
見出し部分の範囲を指定しても結果に見出しは含まれません。
見出しは関数を入力するセルの上の行に予め入力しておきましょう。
◆複数条件も指定可能◆
「営業部」で「女性」だけ抽出したいなど、
(仮にD列に性別欄があるとして)条件が複数なら、
=FILTER(A2:C100,(B2:B100="営業")*(D2:D100="女"))
のように、 ()で囲んだ条件部分同士を、アスタリスク*で繋ぎます。
ここで使われている「*」は、AND(かつ)という意味になります。
一方、
「営業部」または「経理部」のようにどちらか一方を条件とするなら
=FILTER(A2:C100,(B2:B100="営業")+(B2:B100="経理"))
のように、()で囲んだ条件部分同士を、プラス+で繋ぎます。
この「+」は、OR(または)という意味になります。
【SORTBY関数とは】
指定した列や行を複数の基準で並べ替える関数
◆構文◆
=SORTBY(配列,基準配列1,[並べ替え順1],...)
・配列:タイトル行を除いた並べ替えたい表データ全体(配列)
・基準配列:並び替えの基準となる列(配列)
・[並び替え順序]:1または省略で昇順、-1で降順
例えば先ほどの表を売上の高い順に並べたい場合は、
=SORTBY(A2:C6,C2:C6,-1)
結果
氏名 部署 売上
佐藤 営業 420
田中 営業 350
高橋 経理 310
鈴木 総務 280
伊藤 営業 260
データは減らず、
順番だけが変わります。
※上記のように基準が1つだけなら、SORT関数で対応できます。
=SORT(配列,基準,[並べ替え順],[データの並び])
・配列:タイトル行を除いた並べ替えたい表データ全体(配列)
・基準:並び替えの基準となる列または行の先頭を1として数値で指定
・[並び替え順序]:1または省略で昇順、-1で降順
・並び替え基準:元データの並ぶ方向。
左右ならTRUE、上下ならFALSE
※注意:見出し(タイトル行)はあらかじめ入力する
SORT関数やSORTBY関数もデータ部分だけ指定します。
見出し部分の範囲を指定しても結果に見出しは含まれません。
見出しは関数を入力するセルの上の行に予め入力しておきましょう。
◆複数条件も指定可能◆
SORTBY関数は、複数(最大126)の列を基準に並べ替えできます。
例えば
•B列の部署ごと
•その中でC列の売上順
なら
=SORTBY(A2:C100,B2:B100,1,C2:C100,-1)
となります。
【FILTER関数とSORTBY関数の違い】
ここまで学ぶと違いがはっきりします。
<目的>
FILTER:条件に合うデータを抽出する
SORTBY:指定した項目を基準に並べ替える
<件数>
FILTER:減ることがある
SORTBY:変わらない
<データの並び順>
FILTER:元の順番のまま
SORTBY:指定した順番
つまり、
FILTER関数は「何を表示するか」を決める関数
SORTBY関数は「どんな順番で表示するか」を決める関数
と言えます。
【2つの関数は組み合わせて使える】
例えば、
営業部だけを売上順に表示したい場合は、
=SORTBY(FILTER(A2:C100,B2:B100="営業"),FILTER(C2:C100,B2:B100="営業"),-1)
となります。
まずFILTER関数が営業部だけ抽出し、その抽出結果をSORTBY関数が売上順に並べ替えています。
ここでポイントなのは、SORTBY関数の第2引数(基準配列)も、FILTER関数で抽出した売上列を指定する必要があるという点です。
例えば、
=SORTBY(FILTER(A2:C100,B2:B100="営業"),C2:C100,-1)
のように元データ全体の売上列を指定すると、並べ替える配列と基準配列のサイズが一致せず、正しく動作しません。
FILTER関数で抽出した結果に対応する売上列を基準配列として指定することが重要です。
【MOS試験ではどう見分ける?】
問題文をよく読むと、「抽出したい」のか「並べ替えたい」のかが分かります。
キーワードを意識すると、使う関数を判断しやすくなります。
◆FILTER関数を使う問題◆
•○○だけ表示する
•条件に一致するデータを抽出する
•○○部のみ表示する
•売上が100万円以上のデータを表示する
•「東京支店」のデータだけを一覧表示する
•条件に一致するレコードを表示する
このような問題では、「条件に一致するデータだけを取り出す」ことが目的です。
つまり、キーワードは
「条件」「抽出」「○○だけ表示」
です。
◆SORTBY関数を使う問題◆
•売上の高い順に表示する
•氏名を五十音順に並べる
•日付の新しい順に並べる
•部署ごとに並べ替える
•指定した列を基準に並べ替える
•昇順または降順に並べ替える
このような問題では、表示するデータは変えずに順番だけを変更することが目的です。
つまり、キーワードは
「並べ替え」「昇順」「降順」「○○順」
です。
◆FILTER関数とSORTBY関数を組み合わせる問題◆
•営業部だけを売上の高い順に表示する
•東京支店のデータを日付の新しい順に表示する
•女性社員だけを氏名順に表示する
このような問題では、
1.FILTER関数で条件に一致するデータを抽出する
2.SORTBY関数で抽出結果を指定した順番に並べ替える
という流れになります。
※迷ったときの判断方法※
問題文を読んで、何をすれば良いか考えてみましょう。
•「データを減らしたいのか?」 → FILTER関数
•「データはそのままで順番だけ変えたいのか?」 → SORTBY関数
•「データも減らして、さらに順番も変えたいのか?」 → FILTER関数とSORTBY関数を組み合わせる
このように考えると、関数の選択で迷うことが少なくなります。
模擬試験出題範囲のご不明な点などは、お気軽にスタッフにご相談くださいね♪
