过滤具有多个条件的查询

时间:2017-01-06 02:23:35

标签: google-sheets

我正在尝试创建一个按月过滤记录的财务报表的表格,以及“#tag”标签。语句中的每个订单项都会将这些标记归因于它们,以便我以后可以过滤它们。我目前无法找出允许我根据通过多个不同下拉列表选择的多个条件来过滤查询的公式。

例如,我想按月过滤A6:G41,我已经这样查询过:

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

A6:G41是我查询的表格,而O3和P3是这几个月的开始和结束日期,给我指定月份的所有交易。我想添加更多条件来过滤餐点,会议,计算机设备等,这些条件将在单元格R1,R2和R3中指定 - 这些是下拉列表。

有什么想法吗?

以下是我为参考而制作的样本表的链接: https://docs.google.com/spreadsheets/d/1dKnUeEad5LyX73Eo6kF-RXFakrhGSty67iKmhPoUbEc/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

如果你的所有查询都是过滤(没有聚合,比较列,数据透视等),那么最好使用filter。一个优点:对数据类型的大惊小怪(例如将日期转换为文本,然后返回日期,如示例所示)。您到目前为止创建的查询等同于

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

我会放弃&#34; 41&#34;从这里(因为列表可能会增长)并继续添加条件:

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

还要求第I列等于R1。如果需要更宽松的匹配,请使用带有正则表达式的regexmatch

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

匹配&#34;旅行&#34;在我的任何地方,不区分大小写。

条件也可以加入&#34; OR&#34;逻辑,通过在它们之间放置+,就像这样:

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

如果I列等于R1,或者R1为空,则第三个条件成立。