目次
Google Sheetsでフィルタを作成する方法が標準のツールしか知らないという方に、驚きのお知らせです。 FILTER関数を一緒に探求しましょう。 すぐに使える公式がたくさんありますし、フィルタリングツールを非常に強力に補完する新しいツールもあります。
少し前にGoogle Sheetsの標準ツールでフィルタリングする方法を説明しました。 値でフィルタリングする方法と条件でフィルタリングする方法を紹介しました。 しかし、スプレッドシートは常に私たちの知らないことを持っています。 そして今回はGoogle SheetsのFILTER関数を一緒に探検していきましょう。
Excelでは見かけないので、ぜひチェックしてみてください。
Google SheetsのFILTER関数の構文
Google SheetsのFILTERは、データをスキャンして、条件を満たした必要な情報を返します。
Google Sheetsの標準的なフィルタとは異なり、この関数は元のデータには何もせず、見つかった行をコピーして、数式を作成した場所に配置します。
各引数はそれ自身を語るので、構文は非常に簡単です。
=FILTER(range, condition1, [condition2, ...])- レンジ は、フィルタリングしたいデータです。 必須
- 条件1 は、列または行と、それが該当する TRUE/FALSE の基準です。 必須。
- condition2,... などは、他の列や行、あるいは他の条件を表す。 任意。
注)各 条件 と同じサイズである必要があります。 レンジ .
注意:複数の条件を使用する場合は、すべて列または行に対する条件でなければなりません。 Google SheetsのFILTER関数は、混合条件を許可していません。
さて、これらの注意点を踏まえて、異なる方式の議論がどのような形になるかを見てみましょう。
Google SheetsでFILTER関数を使う方法
いくつかの注文を追跡する小さなテーブルにフィルタをかけながら、すべての例を紹介するつもりです。
この表には、様々な種類のデータが20行含まれており、関数を学ぶには最適です。
Google Sheetsでテキストでフィルタリングする方法
例1.テキストは正確に
まず、遅延している注文だけを表示するように依頼します。 フィルターする範囲を入力します。 A1:E20 - を設定し、条件となる - 列 E 等しくなければならない 遅れて :
=FILTER(A1:E20,E1:E20="Late")
例2.テキストはまさにnot
遅れてきた注文を除いて、すべての注文を取得するように関数に依頼することができます。 そのためには、特別な比較演算子()が必要です。 におよばない :
=FILTER(A1:E20,E1:E20"Late")
例3.テキストに含まれるもの
では、Google SheetsのFILTER関数を部分一致で構築する方法を紹介したいと思います。 つまり、以下のような場合です。 テキストに含まれる .
A列の注文IDの末尾に国の略語が含まれていることに気づきましたか? カナダから出荷された注文のみを取得する数式を作成してみましょう( シーエー ).
通常、この作業にはワイルドカード文字を使用しますが、FILTER式に関して言えば、このように操作するのはFIND関数とSEARCH関数です。
ヒント:単純な単語の出現でフィルタリングする際に、他の関数のネストを避けたい場合は、最後に紹介するアドオンを自由に試してみてください。
注)大文字小文字を区別する必要がある場合はFINDを、そうでない場合はSEARCHを選択してください。
この例では、テキストの大文字と小文字は関係ないので、SEARCH関数で十分です。
=SEARCH(search_for, text_to_search, [starting_at])- 検索対象 は、検索したいテキストです。 ダブルクォートで囲むことがとても重要です。 ガー . 必要です。
- テキスト検索 は、必要なテキストをスキャンする範囲です。 必要なのは A1:A20 私の場合
- 開始時刻 は検索開始位置、つまり検索を開始する文字の番号を示します。 これは完全に任意ですが、私はこれを使う必要があります。 すべての注文IDは文字と数字で構成されており、つまり シーエー を探すことができます。 シーエー 8文字目から
これらのパーツを集めて、目的の結果を得ることができるのです。
=FILTER(A1:E20,SEARCH("ca",A1:A20,8))の場合
Google Sheetsで日付と時刻でフィルタリングする方法
日付と時間によるフィルタリングも、追加の関数を使用する必要があります。 基準によっては、Google Sheetsのメインのフィルター関数にDAY、MONTH、YEAR、あるいはDATEとTIMEを埋め込む必要があるかもしれません。
最後に紹介するツールは、機能を一切必要としません。
例1.日付が
2020年1月9日締切の注文を手に入れるために、DATE機能を呼び出します。
=FILTER(A1:E20,C1:C20=DATE(2020,1,9))
注意:この機能は、セルに日付と一緒に時間単位が含まれていない場合のみ有効です(スプレッドシートのデフォルトで追加されている場合があります)。 念のため、セルを選択し、数式バーに表示される内容を確認してみてください。
もし時間があって削除ができない場合は、Google SheetsのFILTER関数でQUERYか、もっと複雑な条件を使って、次のようにします。
=FILTER(A1:E20,C1:C20>=DATE(2020,1,9),C1:C20
ヒント:マルチコンディションについては、以下で詳しく説明します。
例2.日付が含まれている
特定の月や年だけに興味があるなら、MONTH関数とYEAR関数でなんとかなります。 日付の入った範囲をそのまま入れて( C1:C20 ) と等しくなるように月 (または年) の番号を指定します ( =1 ):
=FILTER(A1:E20,MONTH(C1:C20)=1)
例3.日付が前/後
指定した日付の前後にあたるデータを取得するには、DATE関数と、より大きい(>)、以上(>=)、以下(<)、以下(<=)といった比較演算子が必要になります。
2020年1月1日以降に受注したものをご紹介します。
=FILTER(A1:E20,D1:D20>=DATE(2020,1,1))
もちろん、ここでDATEをMONTHやYEARに置き換えても、結果は上記と変わりません。
=FILTER(A1:E20,YEAR(D1:D20)>=2020)
例4.時間
Google Sheetsで時間によるフィルタリングを行う場合、日付の場合と全く同じように、追加のTIME関数を使用します。
例えば、タイムスタンプが午後2時以降の日だけを取得する場合は、以下のような式になります。
=FILTER(A1:B10,A1:A10>TIME(14,0,0))
しかし、HOUR関数(日付のMONTHと同様)を使う場合は、少し勝手が違います。 表計算では、時間は十分に厄介なので、いくつかの調整が必要です。
の間のタイムスタンプを持つすべての行を返すには、次のようにします。 午後2時00分 と 午後12時00分 は、こうしてください。
- 範囲をタイムスタンプで囲む( A1:A10 ) を別の HOUR 関数で表示します。 これは、どこを見るべきかを示しています。
- そして、時間そのものを設定するHOUR機能をもう一つ追加します。
=FILTER(A1:B10,HOUR(A1:A10)>=HOUR("2:00:00 PM"))
ヒント:結果が含まれないことを確認する 午後12時41分 それは、表計算ソフトがそれを 00:41 よりも小さい 2:00 .
もし、もっとエレガントな解決策を見つけたら、下のコメント欄で共有してください。
Google Sheetsでセル参照を使ってフィルタリングする方法
Google Sheetsのフィルター式を作成するたびに、単語かその一部か、日付か、など条件をそのまま入力する必要があります。セル参照に慣れている方なら別ですが。
数式を入力する代わりに、条件を指定してセルを参照するだけなので、数式に関するさまざまなことが簡単になります。
遅れているすべての注文を探したのを覚えていますか? E4はテキストですぐに参照できます。 遅れて を行うようにしました。
=FILTER(A1:E20,E1:E20=E4)
結果は全く変わりません。
これを前述のすべての数式で繰り返すことができます。 例えば、DATEなどの関数を増やすことは避け、目的の日付のセルを参照するだけにします。
=FILTER(A1:E20,C1:C20=C15)
ヒント:セル参照では、別のシートからのフィルタリングも可能です。 シート名を持ってくるだけでよいのです。
=FILTER(Orders!A1:E20,Orders!C1:C20=Orders!C15)
Google SheetsのFILTER式で複数の条件を指定する
以前は、Google Sheetsのすべてのフィルタ式で主に1つの条件を使用していましたが、一度にいくつかの条件でテーブルをフィルタリングする必要がある可能性が高くなります。
例1.IS BETWEENロジック
2つの数値/日付/時刻の間にあるすべての行を見つけるには、この関数のオプション引数が便利です。 条件2 , 条件3 毎回同じ範囲を新しい条件で複製するだけです。
いいか、250ドル以上350ドル未満の注文だけ返品するんだ。
=FILTER(A1:E20,B1:B20>=250,B1:B20<350)
例2.Google SheetsのFILTER関数でのORロジック
悲しいことに、関心のある列に異なるレコードを含むすべての行を取得するには、前の方法ではできません。 では、どのように途中と後半の両方の注文をチェックすることができますか?
もし、前の方法を試して、それぞれの注文状況を別の条件に入力すると、#N/Aエラーが発生するのです。
したがって、FILTER関数のORロジックを正しく設定するためには、この2つの条件を1つの条件として合計する必要があるのです。
=FILTER(A1:E20,(E1:E20="Late")+(E1:E20="On the way")))
Google Sheetsに複数列のフィルタを追加する
1つの列にいくつかの条件を適用するよりもさらに可能性が高いのは、Google Sheetsで複数の列に対してフィルタを作成することです。
引数はすべて同じですが、計算式の新しい部分には、それぞれ独自の基準を持つ新しい範囲が必要です。
Google SheetsのFILTER関数で、以下のルールにすべて該当する注文を返すようにしてみましょう。
- 200〜400円相当のはずです。
A1:E20,B1:B20>=200,B1:B20<=400
- 2020年1月が期限です。
月(c1:c20)=1
- そして、今も進行中です。
E1:E20="途中"
これらのパーツを組み合わせれば、Google Sheetsの複数列のフィルタ式は完成です。
=FILTER(A1:E20,B1:B20>=200,B1:B20<=400,MONTH(C1:C20)=1,E1:E20="on the way")
Google Sheetsの高度なフィルタを数式なしで実現する方法
FILTER関数は素晴らしいものですが、時には多すぎることもあります。 すべての引数、デリミタ、ネストした関数などを追跡することは、非常に混乱し、時間がかかることがあります。
幸い、Google Sheetsのフィルター機能や標準ツールである「複数のVLOOKUPのマッチング」を超越した、より良い解決策があります。
この名前は、Google SheetsのVLOOKUP関数に似ています。 FILTER関数と同じです。
以下は、その内容です。 5大メリット 道具の をGoogle SheetsのFILTER関数に置き換えたものです。
- を考えなくてよくなります。 条件によって異なる演算子 - 選りすぐり をリストから選択します。
ぜひ、Multiple VLOOKUP Matchesをインストールして試してみてください。 より詳しくご覧になりたい方は、チュートリアルページや特別な解説ビデオをご覧ください。