如何检查查询参数是否为空?

时间:2019-07-19 12:38:33

标签: google-sheets google-sheets-formula google-sheets-query google-query-language

这个想法是根据玩家人数,时间和/或难度级别等参数生成棋盘游戏列表。我正在使用 Google表格中的 QUERY 功能。

我有一张纸上有一个棋盘游戏的清单。他们分别为标题,最小玩家数,最大玩家数,难度和游戏时间列。

在第二张纸上,我有3个单元格,用户可以用来写玩家数(B1),难度(B2)和/或游戏时间(B3)。

这个想法是,在所有3个单元格都为空的情况下,它什么都不显示,但是您可以填写这3个单元格中的任何一个甚至全部,以过滤完整的游戏列表。

但是,如果我对所有三个参数都使用一个查询,如果任何一个为空,则会出现错误。

我通过使用多个嵌套的IF来解决此问题,该IF检查任何单元格是否为空。基于此,它会运行略有不同的QUERY函数(即,排除空单元格)。但是,这很难解决,如果要添加任何其他参数,将很难修改。

这是完整的查询:

=QUERY('Lista gier'!A1:H424;"select A,C,D,E,F where C<="&B1&" AND D>="&B1&" AND E='"&B2&"' AND F<="&B12&" AND F>=(0.5*"&B12&") AND B='Gra'");

预期的结果是正确的游戏列表,但我总是收到错误消息:

  

无法解析功能QUERY参数2的查询字符串:PARSE_ERROR:在第1行第24列遇到““ C””。期望其中之一:“(” ...“(” ...

1 个答案:

答案 0 :(得分:0)

正确的语法为:

=QUERY('Lista gier'!A1:H424; 
 "select A,C,D,E,F 
  where C <= "&B1&" 
    and D >= "&B1&" 
    and E  = '"&B2&"' 
    and F <= "&B12&" 
    and F >= "&0,5*B12&" 
    and B  = 'Gra'"; 0)

假设 B1 B12 是数字,而 B2 是文本字符串