我正在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的值不会在列表中单独显示(并且“求和”时似乎没有任何值构成)。我对正在发生的事情不知所措,似乎没有任何答案可以解决神秘价值观的出现,所以我希望我不要再重复旧的观点-如果我愿意的话,请纠正我,在此先感谢您的指导
答案 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也会继续评估AND
和OR
语句并总结一堆废话
=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), ), )