2017-01-06 6 views
0

月ごとに記録された財務諸表をフィルタリングする表を作成する際に、「タグ」を使用します。ステートメントの各広告申込情報には、これらのタグが付いているので、後でフィルタリングすることができます。私は現在、いくつかの異なるドロップダウンリストを介して選択された複数の条件に基づいてクエリをフィルタリングできるような数式を見つけ出すことができません。複数の条件でクエリをフィルタリングする

したがって、たとえば、私はA6をフィルタリングしたいと思います。私のような照会きた月ごとのG41、:

=query(A6:G41," select * where A >= date '"&TEXT(O3,"yyyy-mm-dd")&"' and A <= date '"&TEXT(P3,"yyyy-mm-dd")&"' ") 

A6:O3及びP3がある一方でG41は、私が照会していた表であります月の開始日と終了日であり、指定された月のすべての取引を私に提供します。ドロップダウンリストであるR1、R2、R3セルで指定される「食事、会議、コンピュータ機器」などのフィルタ条件を追加したいと思います。

どのような考えですか?ここで

は、私は参考のために作られたサンプルシートへのリンクです: https://docs.google.com/spreadsheets/d/1dKnUeEad5LyX73Eo6kF-RXFakrhGSty67iKmhPoUbEc/edit?usp=sharing

答えて

0

すべてのクエリがない場合(など何の集約、列の比較、ピボットを、)フィルタリングされていない、代わりにfilterを使用することをお勧めします。 1つの利点:実質的にデータ型についての騒ぎ(日付からテキストへの変換、その後の日付への変換など)

=filter(A6:G, A6:A >= O3, A6:A <= P3, I6:I = R1) 

も、私はの列が必要です:あなたがこれまでに作成したクエリが、私は(リストが成長する可能性があるため)ここから「41」をドロップして、条件を追加し続けることになる

=filter(A6:G41, A6:A41 >= O3, A6:A41 <= P3) 

に相当しますR1と等しくなければならない。緩い一致が必要な場合は、正規表現でregexmatchを使用します。

=filter(A6:G, A6:A >= O3, A6:A <= P3, regexmatch(I6:I, "(?i)travel")) 

試合どこでもIにおける「旅行」、大文字と小文字を区別しないし。

条件はまた、このように、それらの間に+を配置することによって、論理によって「OR」に接合することができる。

=filter(A6:G, A6:A >= O3, A6:A <= P3, (I6:I = R1) + isblank(R1)) 

いずれかのI列はR1に等しい、又はR1が空白の場合ここで第三の条件が成立します。

+0

驚くばかりです。これはこれまでのところ素晴らしいですし、スーパーに役立ちます! 私が見ている1つの問題は、R1を何かに変更してフィルタ内に見つからない場合、エラーが発生するということです。そして私がそれを元に戻すと、元に戻すためのヌル値がないことに気付きます。これに対処する解決策を考えてもいいですか? – Tommy

+0

'filter'が' iferror() 'でラップされていると、エラーメッセージは表示されません。 "null"オプションを使用するには、ユーザーにR1を空白のままにして、regexmatchを使用してフィルタする:regexmatch(I6:I、 "(?i)"&R1) 'など。 R1が空の場合、これはすべてと一致します。 – FTP

+0

素晴らしい作品です!最後のことは、すべての条件が満たされている場合は、このように動作します。 = iferror(フィルタ(A6:G、A6:A> = O3、A6:A <= P3、I6:I = R2、H6:H = R1、J6:J = R3) ) 'しかし、もし私が単に指定された月のすべてのトランザクションをリストに戻し、' R1'、 'R2'、' R3'を空白にしたいのであれば、エラーを出します。 'iferror()'関数 – Tommy

関連する問題