如何在 Google 个工作表中使用 QUERY

How to use QUERY in Google Sheets

我有一个要查询的 Google 表格数据库。我希望查询基于 B、C 和 D 列中的数据,如果满足条件,则 return 所有数据。我有用于这三列搜索条件的输入单元格,我希望查询执行以下操作:

  1. 忽略搜索单元格中未输入值的搜索条件
  2. 在给定单元格中有值的地方使用 AND 逻辑

例如,输入单元格中的搜索条件:

我想查询 return 数据,其中 C 是任何东西,B =“1”,D 包含“the”。

另一个例子:

我想查询 return 满足所有三个条件的数据

我希望 D 在所有情况下都不为空。

我在将空条件合并到查询中时遇到问题。我试过动态使用 AND/OR 取决于给定搜索单元格中是否有数据,但我无法让它工作。

因此,我创建了一个非常长的查询来解释 B、C 和 D 的所有可能组合。这可行,但我想合并更多的搜索条件,并且这个等式变得复杂到 4, 5 个或更多搜索条件。

这是上面第一个示例的查询输入和查询结果的图像(我不确定为什么名称列中的某些值不包含“the”)。 Image of Query Sheet

这是我正在查询的数据库的图像: Image of Database Sheet

这是我使用的公式:

=if(and(B4="",C4=""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and D IS NOT NULL order by D asc",1),
if(and(B4<>"",C4=""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and B matches '"&B4&"' and D IS NOT NULL",1),
if(and(B4="",C4<>""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and C matches '"&C4&"' and D IS NOT NULL",1),
if(and(B4<>"",C4<>""),query(DATABASE!A1:E,"SELECT * WHERE D contains '"&D4&"' and B matches '"&B4&"' and C matches '"&C4&"' and D IS NOT NULL",1),
if(D4="",query(DATABASE!A1:E,"SELECT * WHERE B matches '"&B4&"' "&IF(AND(B4<>"",C4<>""),"AND","OR")&" C matches '"&C4&"' and D IS NOT NULL",
1),FALSE)))))

我的问题:我想简化这个等式,以便它可以扩展到多个搜索条件(超过 3 个)。感谢您的帮助!

试试这个:

=QUERY(
  DATABASE!A:E,
    "WHERE D IS NOT NULL"
  & IF(B4 = "",, " AND B = " & B4)
  & IF(C4 = "",, " AND C = '" & C4 & "'")
  & IF(D4 = "",, " AND D CONTAINS '" & D4 & "'")
  & " ORDER BY D",
  1
)