Google表格查询返回的结果在源列表中不存在

时间:2019-02-18 21:09:57

标签: google-sheets google-query-language

我正在Google表格中创建预算跟踪器。我在使用Google查询语言返回源数据中不存在的结果时遇到麻烦

我有一个可以在其中输入支出的Google表单,该表单会在我的Google云端硬盘中填充相关的表格。我的主预算跟踪器也位于我的Google云端硬盘中。我使用IMPORTRANGE将数据从“响应”电子表格中提取到“主数据”中,然后使用“查询”将其分离到工作簿中工作表上的不同“支出”类别中(每月一个)。 2月工作得很好-找到并正确汇总了所有支出,然后在一年中的每个月重复2月工作表,更新了公式或查找条件。但是March的行为很奇怪-它返回的March值不存在-不仅总和不存在,而且单词'March'也也不存在,因此不应该匹配。我已经调整了代码,尝试刷新并将公式重写到单元格中以强制刷新,然后从外部电子表格重新导入了范围,我尝试了各种括号位置(我不是SQL或Google查询语言专家,所以感觉有点像我的方式),因为我认为这与AND / OR子句没有被“整理”有关,但是没有一个产生什至不同的结果,总是返回相同的假值

查询代码如下:

=query(spend, "select sum(B) where H = '"&$H$1&"' and E='Leisure' or E='Tickets' or E='Parking' or E='Other' label sum(B) ''", -1)

“支出”是一个范围,其中包含从“响应”电子表格中导入的数据,其中包括几个后表单完成公式,用天和月对行进行编码。目前,只有H编码为“二月”的值-别无其他。单元格H1包含月份名称(已写,而不是公式)。此公式在“ 2月”表中完美运行,如果我将单元格H1更新为3月表中的“ 2月”,它将显示2月份的准确值,但是,如果我在H1中输入“ 3月”,则结果很奇怪

我期望三月份的结果为£0,但相反,我得到的值为£19.46。如前所述-源列表“支出”仅包含以H表示的2月编码的值,并且£19.46的值不会在列表中单独显示(并且“求和”时似乎没有任何值构成)。我对正在发生的事情不知所措,似乎没有任何答案可以解决神秘价值观的出现,所以我希望我不要再重复旧的观点-如果我愿意的话,请纠正我,在此先感谢您的指导

2 个答案:

答案 0 :(得分:0)

我认为您可能只想尝试一下:

=query(spend, "select sum(B) where H = '"&$H$1&"' AND (E='Leisure' OR E='Tickets' OR E='Parking' OR E='Other') label sum(B) ''", -1)

编辑:这将导致错误,因为它将返回一个空查询,因此请尝试执行此操作。

=iferror(query(spend, "select sum(B) where H = '"&$H$1&"' AND (E='Leisure' OR E='Tickets' OR E='Parking' OR E='Other') label sum(B) ''", -1),0)

答案 1 :(得分:0)

您之所以选择19.46,是因为即使在Query中未找到H1,Query也会继续评估ANDOR语句并总结一堆废话

=IFERROR(IF(QUERY(spend, 
              "select count(H) 
               where H='"&$H$1&"' 
               label count(H)''", 0)>0,
 QUERY(spend, "select sum(B) 
               where (H='"&$H$1&"') 
                 AND (E='Leisure') 
                  OR (E='Tickets') 
                  OR (E='Parking') 
                  OR (E='Other') 
               label sum(B)''", -1), ), )