FILTER(フィルター)Googleスプレッドシート関数

FILTER(フィルター)Googleスプレッドシート関数

FILTER(フィルター)は、ソース範囲をフィルタ処理して、指定した条件を満たす行または列のみを返します

VLOOKUP関数は一致する行を1行呼び出しますが
FILTER関数は一致するすべての行を呼び出します

・関数FILTER(フィルター)
・書式=FILTER(範囲,条件1,条件2)
・内容範囲をフィルタ処理して、指定した条件を満たす行または列のみを返します。
スプレッドシートサンプル( シート1
  A B C D E F
1            
2   日時 担当 内線 受付  
3   11月19日 鈴木 1234 9:00~18:00  
4   11月20日 佐藤 5678 10:00~19:00  
5   11月21日 高橋 6789 10:00~19:00  
6   11月22日 鈴木 1234 9:00~18:00  
7   11月23日 鈴木 1234 9:00~18:00  
8   11月24日 高橋 6789 9:00~18:00  
9   11月25日 鈴木 1234 9:00~18:00  
10   11月26日 鈴木 1234 9:00~18:00  
11   11月27日 佐藤 5678 10:00~19:00  
12   11月28日 佐藤 5678 10:00~19:00  
13   11月29日 高橋 6789 9:00~18:00  
14   11月30日 小林 3456 9:00~18:00  
15            

上記の表から担当者が「高橋」の行を呼び出します
=FILTER(範囲,条件1,条件2)

セルB5
=FILTER('シート1'!B3:E14,'シート1'!C3:C14=C2)

  A B C D E F
1            
2   担当者 高橋      
3            
4   日時 担当 内線 受付  
5   11月21日 高橋 6789 10:00~19:00  
6   11月24日 高橋 6789 9:00~18:00  
7   11月29日 高橋 6789 9:00~18:00  
8            

担当者からを検索する場合
=FILTER('シート1'!B3:E14,'シート1'!C3:C14=C2)

※展開する範囲のセルに何かが入力されている場合は「#REF!」エラーになります

※結果が見つからない場合「#N/A」エラーになます
「#N/A」エラーを表示したくない場合、または指定の文字を出す場合
IFERROR関数を使います。IFERROR(テストする値,エラーの時の値)
上記の式をすべてテストする値に入れエラーの時の値を空白にします
=IFERROR(FILTER('シート1'!B3:E14,'シート1'!C3:C14=C2))


複数の条件で抽出する場合

=FILTER('シート1'!B3:E14,('シート1'!B3:B14=B2)*('シート1'!C3:C14=C2))

1つ目の条件:セルB2の日時
'シート1'!B3:B14=B2

2つ目の条件:セルC2の担当者
'シート1'!C3:C14=C2

2つの条件を「*」で掛けた場合が「&」
('シート1'!B3:B14=B2)*('シート1'!C3:C14=C2)
これで「日時」「担当者」が一致した行が抽出されます

また2つの条件を「+」で足した場合が「または」になります
('シート1'!B3:B14=B2)+('シート1'!C3:C14=C2)
これで「日時」「担当者」どちらかが一致した行が抽出されます


結果がエラーになる、日時を呼び出せない場合

3通りが考えられます

1つ目:範囲の日時が文字列で入力されている場合
条件は「"8月18日"」と直接指定した場合「8月18日」という数字と漢字の文字列を探します 条件の日時も文字列で入力されていれば呼び出せますが、通常セルにある日時はシリアル値として認識されます

範囲の日時:「8月18日」シリアル値「43695」
条件:「"8月18日"」文字列
文字列の「8月18日」を探してもシリアル値「43695」とは一致しません
対応策:条件の8月18日をシリアル値に変換します
=FILTER(B3:E14,B3:B14=VALUE(C2))

2つ目:日時をセルで指定した場合はシリアル値になりますが
何かの表や去年から使いまわして日付をコピーした場合
「8月18日」が実は「2017年8月18日」など今年ではない時は見た目は一緒でも中身は「2017年8月18日」と「2018年8月18日」なので一致しません
対応策:セルをクリックして見ると年号も表示されるので今年に直します

また検索している関数がTODAYやNOWの場合
TODAYもNOWも表示を日付にすれば「11月21日」ですが
シリアル値が違うので一致しません
=NOW()  45617.684085648
=TODAY() 45617
NOW()は小数点以下に時間を表示しています
今日を検索するにはNOW()ではなくTODAY()を使います

3つ目:展開範囲内に何かが入力されている
この場合セルに「#REF!」と表示されます

FILTER関数とよく使うスプレッドシート関数
 AVERAGE  空白や「0」のセルを無視した平均値
 AVERAGEA  空白や「0」のセルを含む平均値
 LARGE  範囲内の最大値
 SMALL  範囲内の最小値
 ROUNDDOWN   指定した桁数で切り捨て


FILTER(フィルター)>HOME

Googleスプレッドシート関数

ネット上からデータを取得する関数

DETECTLANGUAGE(ディテクトランゲージ) テキストで使用される言語を識別して言語コードを返します

GOOGLETRANSLATE(グーグルトランスレート) 言語コードを指定して表示されている言語を翻訳します

ISURL(イズユーアールエル) 指定した値が有効な URL であるかどうかを検証します

IMAGE(イメージ) セル内に画像のURLを指定することで画像を表示します

IMPORTDATA(インポートデーター) 指定したファイルからタブ区切り、カンマ区切りで文字列を抜き出します

IMPORTFEED(インポートフィード) RSSフィードやAtomフィードをインポートします

IMPORTHTML(インポートHTML) ページのソースからクエリを指定して文字列を抜き出します

IMPORTXML(インポートエックスエムエル) さまざまな種類のデータから文字列をインポートします

(C) 2024 Digital World