59

我无法在 Google 电子表格中找出一个相当简单的 QUERY 语句。我正在尝试使用单元格引用而不是静态值,但遇到了麻烦。下面是我正在使用的代码,但我不断收到“错误:公式解析错误”。

=QUERY(Responses!B1:I, "Select B where G contains"& $B1 &)

我确定这是一个简单的错误,但有人可以告诉我如何编写上述内容,以便 QUERY 从 B 中提取数据,其中 G 包含单元格 B1 中的值(单元格引用)?

4

8 回答 8

92

从 Web 应用程序复制:

=QUERY(Responses!B1:I, "Select B where G contains '"&$B1&"'")
于 2014-05-22T01:55:03.557 回答
33

我这里只有一个解决方法。在这种特殊情况下,我会使用该FILTER函数而不是QUERY

=FILTER(Responses!B:B,Responses!G:G=B1)

假设您的数据在“响应”表上,但您的条件(单元格引用)在实际工作表的 B1 单元格中。

希望能帮助到你。

更新:

在搜索了原始问题之后:您的公式的问题绝对是第二个&标志,它假设您希望将更多内容连接到您的WHERE陈述中。尝试删除它。如果它仍然不起作用,那么试试这个:

=QUERY(Responses!B1:I, "Select B where G matches '^.\*($" & B1 & ").\*$'")- 我没有尝试过,但它在另一篇文章中有所帮助:查询 WHERE 子句的值范围?

于 2014-05-02T12:10:57.233 回答
9

我知道这是一个旧线程,但我和 OP 有同样的问题并找到了答案:

您快到了,您可以在查询语言中包含单元格引用的方法是将整个内容包装在语音标记中。因为整个查询是用语音标记编写的,所以您需要在 ' 和 " 之间交替,如下所示。

你需要的是这样的:

=QUERY(Responses!B1:I, "Select B where G contains '"& B1 &"' ")

如果你想引用多个单元格,你可以添加更多这样的

=QUERY(Responses!B1:I, "Select B where G contains '"& B1 &"' and G contains '"& B2 &"' ")

以上将根据 B1 和 B2 的内容进一步过滤您的结果。

于 2016-10-11T11:46:29.097 回答
5

我发现单引号>双引号>用&符号包裹确实有效。所以,对我来说,它看起来像这样:

=QUERY('Youth Conference Registration'!C:Y,"select C where Y = '"&A1&"'", 0)
于 2018-07-15T18:01:07.180 回答
4

以上答案都不适合我。这个做了:

=QUERY(复制!A1:AP, "选择 AP, E, F, AO 其中 AP="&E1&" ",1)

于 2018-05-04T06:07:56.323 回答
3

要使其适用于文本和数字:

完全符合:

=query(D:E,"select * where D like '"&C1&"'", 0)

将搜索字符串转换为小写:

=query(D:E,"select * where D like lower('"&C1&"')", 0)

转换为小写并包含部分搜索字符串:

=query(D:E,"select * where D like lower('%"&C1&"%')", 0)

在此处输入图像描述


A1 =黄色查询/公式/ A:B =
绿色结果区域 / C1 =
蓝色搜索区域 / D:E = 数据区域

如果输入是文本而不是数字时出现错误;移动数据并删除(现在为空)列。然后将数据移回。

于 2020-09-16T07:37:06.993 回答
3

这是工作代码: =QUERY(Sheet1!$A1:$B581, "select B where A = '"&A1&"'")

在这种情况下,我需要间隔保持固定,并在拖动时更改参考值。

于 2020-10-04T10:18:24.333 回答
2

旧线程,但我在寻找以下答案的过程中发现了这个,并认为其他人可能也需要它。

=IFERROR(ArrayFormula(query(index(Sheet3!A:C&""),"select* Where Col1="""&B1&""" ")), ARRAYFORMULA({"*     *","no cells","match"}));

这是一个简单构建的文本过滤器,来自位于“sheet3”中的 3 列数据集(A、B 和 C)到当前工作表中,并调用与当前工作表中的单元格进行比较以在Col1(A).

#N/A如果过滤器没有结果,这个位只是为了消除错误//ARRAYFORMULA({"* *","no cells","match"}))

于 2016-07-28T03:21:54.563 回答