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

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


VLOOKUP関数は一致する行を1行呼び出しますが
FILTER関数は一致するすべての行を呼び出します
・関数FILTER(フィルター)
・書式=FILTER(範囲,条件1,条件2)
・内容範囲をフィルタ処理して、指定した条件を満たす行または列のみを返します。
スプレッドシートサンプル( シート1
  A B C D E F
1            
2   日時 担当 内線 受付  
3   9月17日 鈴木 1234 9:00~18:00  
4   9月18日 佐藤 5678 10:00~19:00  
5   9月19日 高橋 6789 10:00~19:00  
6   9月20日 鈴木 1234 9:00~18:00  
7   9月21日 鈴木 1234 9:00~18:00  
8   9月22日 高橋 6789 9:00~18:00  
9   9月23日 鈴木 1234 9:00~18:00  
10   9月24日 鈴木 1234 9:00~18:00  
11   9月25日 佐藤 5678 10:00~19:00  
12   9月26日 佐藤 5678 10:00~19:00  
13   9月27日 高橋 6789 9:00~18:00  
14   9月28日 小林 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   9月19日 高橋 6789 10:00~19:00  
6   9月22日 高橋 6789 9:00~18:00  
7   9月27日 高橋 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も表示を日付にすれば「9月19日」ですが
シリアル値が違うので一致しません
=NOW()  44093.92875
=TODAY() 44093
NOW()は小数点以下に時間を表示しています
今日を検索するにはNOW()ではなくTODAY()を使います

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

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

Googleスプレッドシート関数

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

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

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

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

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

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

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

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

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

(C) 2001-2020 Digital World