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

Google Sheets Query returning results that don't exist in the source list

我正在 Google Sheet 秒内创建预算跟踪器。我在使用 Google 查询语言返回源数据中不存在的结果时遇到问题

我有一个可以输入支出的 Google 表格,它会填充我的 Google 驱动器中的关联 Sheet。我的主预算跟踪器也位于我的 Google 驱动器中。我使用 IMPORTRANGE 将数据从 Responses spreadsheet 提取到 Master 中,然后查询将其分成工作簿中 sheet 上的不同 'expenditure' 类别(每个月一个).二月工作完美 - 所有支出都被找到并正确汇总,然后二月 sheet 被复制到一年中的每个月,公式或查找条款更新。但是 March 的行为很奇怪——它为 March 返回了一个不存在的值——不仅求和值不存在而且单词 'March' 也不存在,所以不应该匹配。我调整了代码,尝试刷新并将公式重写到单元格中以强制刷新,从外部传播重新导入范围sheet,我尝试了各种括号放置(我不是 SQL 或 Google 查询语言专家,所以我有点感觉)因为我认为这与 AND/OR 子句不是 'collated',而是 none 有关甚至产生了不同的结果,它总是返回相同的错误值

查询代码如下:

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

'spend' 是包含从 Responses spreadsheet 导入的数据的范围,其中包括几个 post 表单完成公式,用日期和月份对行进行编码。现在,H 中只有编码为 'February' 的值 - 没有别的。单元格 H1 包含月份名称(写在,而不是公式中)。此公式在 'February' sheet 中完美运行,如果我将单元格 H1 更新为 'February' 三月份的 sheet 它会显示二月份的准确值,但是,如果我在 H1 中输入 'March' 我得到了奇怪的结果

我预计 3 月份的结果为 0 英镑,但我得到的值为 19.46 英镑。如前所述 - 源列表 'spend' 仅包含在 H 中编码为 February 的值,并且值 £19.46 并未单独出现在列表中(并且在 [=31= 时似乎没有由任何值组成) ]).我对正在发生的事情一头雾水,似乎没有答案可以解决神秘值的出现,所以我希望我不是在重复老话——如果我是的话,请纠正我,在此先感谢您的指导

我想你可能只想试试这个:

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

编辑:这将导致错误,因为它将 return 一个空查询,所以试试这个。

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

你选择19.46是因为即使在Query中找不到H1,Query也会继续评估ANDOR语句并总结出一堆废话

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