首页 > 解决方案 > 如何检查查询参数是否为空?

问题描述

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

我有一张包含棋盘游戏列表的表格。他们有单独的列标题、最少玩家数、最多玩家数、难度、游戏时间。

在第二张表中,我有 3 个单元格,用户可以使用它们来编写玩家数量 (B1)、难度 (B2) 和/或游戏时间 (B3)。

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

但是,如果我对所有三个参数都使用一个查询,如果有任何一个为空,我会收到错误消息。

我通过使用多个嵌套的 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”。期待以下之一:“(”...“(”...

标签: google-sheetsgoogle-sheets-formulagoogle-sheets-querygoogle-query-language

解决方案


正确的语法是:

=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)

假设B1B12是数字,B2是文本字符串


推荐阅读