处理和修改 Google Sheets =query() returns #N/A 时返回的异常

Handling and modifying the exception returned when a Google Sheets =query() returns #N/A

我有一个针对 table 在 Google 工作表上运行的查询,其中用户有单独的输入,可以修改逻辑检查中的值以在 table 上得到 TRUE FALSE 结果.对于查询中的 where 语句,用户可能选择 returns 全部为 FALSE。

我得到的输出是#N/A,我希望能够创建一个异常,我可以在其中识别它正在返回#N/A,并将输出更改为空白或 "No results found".

我的用户不是很懂技术,所以我需要它对没有编码知识或经验的人来说是清晰的。

通常当我从 Google Sheets 或 Excel 中的函数返回错误时,我会使用 =Iferror() 函数来控制错误的输出例外。这似乎不起作用,要么是因为函数 iferror 是在 =query 之外的范围内创建的,要么是因为一些其他幕后结构问题。

FALSE,  PIG,    .50

FALSE,  APPLE,  [=13=].50

FALSE,  CAR,    .00

FALSE,  HORSE,  .00

然后我想也许我可以添加一个 if() 语句,并将查询放在一个逻辑语句中检查值 "N/A":

if(query(A:B,"select B where A =TRUE")="#N/A","No results found",(A:B,"select B where A = TRUE"))

这没有用。返回的值仍然是“#N/A”。所以我想也许异常的值类型在技术上不是字符串值,所以它不会接受非字符串值#N/A等于“#N/A”,所以我将第一个查询包装在 concatenate() 中,试图将其强制为单个 variable/cell 值。我知道如果它有结果,这可以将它运行的查询变成一个单一的字符串,但是这样做:

if(concatenate(query(A:B,"select B where A =TRUE"))="#N/A","No results found",(A:B,"select B where A = TRUE"))

这还是returns“#N/A”

我想也许它返回的实际值是一个 NULL 类型的值,并且它在幕后有一些聪明的恶作剧让它在 where 函数过滤掉所有结果时显示“#N/A”。所以我将 if 语句中检查的参数从“#N/A”更改为“”,如下所示:

=if(concatenate(query(lookup!Z2:AN,"select Z where AN = TRUE"))="","No results found",query(lookup!Z2:AN,"select Z where AN = TRUE"))

这还是returns“#N/A”

我想也许 isblank() 函数中会有一些机制来发现它是空白的,将其更改为:

=if(ISBLANK(concatenate(query(lookup!Z2:AN,"select Z where AN = TRUE"))),"No results found",query(lookup!Z2:AN,"select Z where AN = TRUE"))

这也还是returns“#N/A”

我很茫然。我希望它能抛出我正在排位赛的异常:"No results found" 但这永远不会发生。显然,我不明白 =query() 函数如何处理后端数据的本质。它一定是在单独的操作层或其他东西上做某事,或者具有完全不同的范围,但我应该如何弄清楚 variable/process 是什么?

不只是 IFERROR?:

=iferror(query(A:B,"select B where A =TRUE"),"No results found")