-
Home »
-
エクセル関数一覧表 »
-
Excel関数の目次 »
-
FILTER関数でデータを抽出する
更新:2024/12/03;作成:2020/2/3
FILTER関数が利用できるExcelの種類(バージョンについて)
FILTER関数の引数
- 引数の表現(日本語)がわかりにくいのでよく見てください。
配列 |
フィルターするデータの範囲または配列 |
含む |
フィルターする条件を書きます(フィルターで残すデータの条件を書きます) |
空の場合 |
(省略可)フィルターした後にデータがない場合に表示するテキスト
(#CALC! エラーとなるときに表示する文字列を指定します) |
- このページでは下表データ(成績表)を使って説明します。
|
B |
C |
D |
E |
F |
G |
H |
2 |
No |
氏名 |
国語 |
算数 |
理科 |
社会 |
合計 |
3 |
1 |
岡田 |
70 |
65 |
71 |
77 |
283 |
4 |
2 |
会田 |
55 |
61 |
66 |
48 |
230 |
5 |
3 |
河合 |
82 |
77 |
83 |
88 |
330 |
6 |
4 |
近藤 |
72 |
78 |
74 |
73 |
297 |
7 |
5 |
井上 |
61 |
55 |
52 |
65 |
233 |
8 |
6 |
木下 |
86 |
98 |
94 |
87 |
365 |
9 |
7 |
植田 |
68 |
78 |
75 |
66 |
287 |
10 |
8 |
佐々木 |
81 |
67 |
71 |
86 |
305 |
11 |
9 |
桑田 |
62 |
64 |
61 |
69 |
256 |
FILTER関数の使用例
- 合計が300以上の氏名を抽出します。
氏名を抽出する場合は
=FILTER(配列,含む,[空の場合])
配列に C3:C11、抽出する条件は H3:H11>=300 を入れて、
=FILTER(C3:C11,H3:H11>=300) とします。

FILTER関数をテーブルで使用する例
- テーブルの名前は 成績表 としています。
J3セルには =FILTER(成績表[氏名],成績表[合計]>=300) と入力します。

- B15セルに
配列にはタイトル行を除いたデータだけを指定します。C3:H11 としています。
含むの条件は 合計が300以上としたいので、 H3:H11>=300 としました。
=FILTER(B3:H11,H3:H11>=300) と入力するだけでデータを抽出することができます。
合計が300以上のデータが抽出されました。

- このデータを並べ替えたい場合はSORT関数と組み合わせます。
Sort関数の引数は合計(6列目)の大きい方から順(降順-1)に並べ替えると指定しています。
=SORT(FILTER(B3:H11,H3:H11>=300 ),7,-1) としました。
SORT関数については SORT関数の使い方 をご覧ください。

FILTER関数をテーブルで使用する例
- テーブルの場合、テーブルの名前は 成績表 としています。
B15セルには =SORT(FILTER(成績表,成績表[合計]>=300),7,-1) と入力します。
- マウスでテーブルの指定方法
テーブルの左上をポイントすると、斜め矢印となり、クリックするとテーブル名が入力されます。

タイトル行の上をポイントすると、下矢印が表示されます。クリックすると、テーブルの列が入力されます。
- 国語と算数のどちらも70を超える人を抽出します。
国語が70を超えるは D3:D11>70 と書きます。
算数が70を超えるは E3:E11>70 と書きます。
この2つの条件の AND条件で抽出したいので、*(アスタリスク) を使って (D3:D11>70 )*(E3:E11>70) と書きます。
これは論理積と呼ばれます。
これを2つ目の引数に入れて、
=FILTER(B3:H11,(D3:D11>70 )*(E3:E11>70))
として、データが抽出できます。
この抽出したデータを合計(6列目)の高い順(降順-1)に並べ替えるときは、SORT関数と組み合わせて、
=SORT(FILTER(B3:H11,(D3:D11>70 )*(E3:E11>70)),7,-1) と、します。
- テーブルの場合は、=SORT(FILTER(成績表,(成績表[国語]>70 )*(成績表[算数]>70)),7,-1) とします。
- 国語と算数のどちらかが70を超える人を抽出します。
国語が70を超えるは D3:D11>70 と書くことができます。
算数が70を超えるは E3:E11>70 と書くことができます。
この2つの条件の OR条件で抽出したいので、論理和 + (プラス)を使って (D3:D11>70 )+(E3:E11>70) と書きます。
数式が =FILTER(B3:H11,(D3:D11>70 )+(E3:E11>70)) でデータが抽出できます。
この抽出したデータを合計の高い順に並べ替えるときは、SORT関数と組み合わせて、
=SORT(FILTER(B3:H11,(D3:D11>70 )+(E3:E11>70)),7,-1)
と、します。

- テーブルの場合は、=SORT(FILTER(成績表,(成績表[国語]>70 )+(成績表[算数]>70)),7,-1) とします。

- 氏名が2文字ではない人のデータを抽出します。
条件は LEN(C3:C11)<>2 と書くことができます。
B15セルに =FILTER(B3:H11,LEN(C3:C11)<>2) と入力しています。
氏名が2文字でない、3文字の「佐々木」さんのデータを抽出できました。

- 氏名が2文字ではない人のデータを抽出します。
条件は NOT(LEN(C3:C11)=2) と書くことができます。
B15セルに =FILTER(B3:H11,NOT(LEN(C3:C11)=2),"該当なし") と入力します。
氏名が2文字でない、3文字の「佐々木」さんのデータを抽出できました。

- 2025/2/3 のデータを抽出したいときは
=FILTER(B3:D17,B3:B17="2025/2/3")
とすると、エラー #CALC! となります。

- 2025/2/3 のデータを抽出したいときは
=FILTER(B3:D17,B3:B17=DATE(2025,2,3))
とします。
DATE関数を使って、シリアル値に変換します。 "2025/2/3"*1 としてもOKです。

月のデータを抽出する
- 下図のデータから、2月のデータを抽出しています。
F3セルの数式は =FILTER(B3:D17,MONTH(B3:B17)=2) としました。

- SORT関数と組み合わせて、売上数の大きい順にデータを並べ替えることができます。
F3セルに =SORT(FILTER(B3:D17,MONTH(B3:B17)=2),3,-1) と入力しています。
- テーブルに変換している場合、テーブル名は「売上表」としています。
数式は =SORT(FILTER(売上表,MONTH(売上表[日付])=2),3,-1) とします。
- Filter関数ではワイルドカードが使えないようですので、文字列を扱う関数 LEFT,RIGHT,MID,FIND関数を利用します。
下図のデータから、氏名が 田 で終わる人のデータを抽出する場合はRIGHT関数を利用します。
C15セルに =FILTER(C3:H11,RIGHT(C3:C11)="田") と入力しています。

- 木 から始まる文字列の場合にはLEFT関数を利用します。
数式は =FILTER(C3:H11,LEFT(C3:C11)="木") とします。

- 河 を含む文字列を含む場合はFIND関数を利用します。
数式は =FILTER(C3:H11,IFERROR(FIND("河",C3:C11)>0,0)) とします。
検索条件に FIND("河",C3:C11)>0 としたら、K列のようにエラーとなるところが出てきます。
エラーを回避するために、IFERROR(関数を組み合わせて、IFERROR(FIND("河",C3:C11)>0,0) エラーの時は 0を返すようにしました。

- FILTER関数を他の関数と組み合わせて、計算に利用する例です。
下図のデータから、金曜日をカウントします。
金曜日という条件をTEXT関数を使って TEXT(B3:B11,"aaa")="金") としています。
数式は =COUNT(FILTER(B3:B11,TEXT(B3:B11,"aaa")="金")) としました。
他の関数を使う例:=SUMPRODUCT((WEEKDAY(B3:B11)=6)*1)

- 金曜日と土曜日をカウントします。
数式は =COUNT(FILTER(B3:B11,(TEXT(B3:B11,"aaa")="金")+(TEXT(B3:B11,"aaa")="土"))) としました。
他の関数を使う例:=SUMPRODUCT((WEEKDAY(B3:B11)=6)*1)+SUMPRODUCT((WEEKDAY(B3:B11)=7)*1)

スポンサードリンク
Home »
エクセル関数一覧表 » FILTER関数でデータを抽出する
PageViewCounter

Since2006/2/27