Google sheets 谷歌电子表格内部查询出错

Google sheets 谷歌电子表格内部查询出错,google-sheets,google-sheets-formula,google-query-language,Google Sheets,Google Sheets Formula,Google Query Language,我在谷歌电子表格中有下表。我想从列B中选择项目,但前提是只有列a和D的值匹配时才选择这些行 我构造了以下查询以检查语法是否正确: =CONCATENATE("Select B where A matches '.*"&TEXTJOIN(".*|.*"; true; query(D2:D; "Select D"));".*'") 执行此操作将得到以下结果: Select B where A matches

我在谷歌电子表格中有下表。我想从列
B
中选择项目,但前提是只有列
a
D
的值匹配时才选择这些行

我构造了以下查询以检查语法是否正确:

=CONCATENATE("Select B where A matches '.*"&TEXTJOIN(".*|.*"; true; query(D2:D; "Select D"));".*'")
执行此操作将得到以下结果:

Select B where A matches '.*Item1.*|.*Item2.*|.*Item3.*'
当我现在在查询中使用此语法时,结果是正确的:
123

=query(A2:B; "Select B where A matches '.*Item1.*|.*Item2.*|.*Item3.*'")
但是当把所有这些放在一起时,我得到了下面的错误消息。为什么呢

=query(A2:B; "Select B where A matches '.*"&TEXTJOIN(".*|.*"; true; query(D2:D; "Select D"));".*'")

除非以某种方式向下查询D列,否则不需要对D列使用查询,因为textjoin将删除空格。你公式中的罪魁祸首是最后一个分号
;“*”
它应该在哪里
&“*”

尝试:


除非以某种方式向下查询D列,否则不需要对D列使用查询,因为textjoin将删除空格。你公式中的罪魁祸首是最后一个分号
;“*”
它应该在哪里
&“*”

尝试:


解决方案:

你放了一个
而不是结尾处的
&

=query(A2:B;“在A与“.*”匹配的地方选择B”和TEXTJOIN(“.*.*”)true;query(D2:D;“选择D”)和“.*”)

说明:

“*”
作为第三个参数传递。但是第三个参数(可选)的类型必须是number

有关更多详细信息,请参阅:


解决方案:

你放了一个
而不是结尾处的
&

=query(A2:B;“在A与“.*”匹配的地方选择B”和TEXTJOIN(“.*.*”)true;query(D2:D;“选择D”)和“.*”)

说明:

“*”
作为第三个参数传递。但是第三个参数(可选)的类型必须是number

有关更多详细信息,请参阅:


Thanx,现在它可以工作了!但为什么声明中需要最后一个零?“似乎没有它也能工作。”詹姆德只是为了额外的安全。有时,如果第三个参数(0)未指定为hanx,则查询无法自动检测标题行,现在它可以工作了!但为什么声明中需要最后一个零?“似乎没有它也能工作。”詹姆德只是为了额外的安全。如果未指定第三个参数(0),有时查询无法自动检测标题行
=QUERY(A2:B; 
 "select B 
  where A matches '.*"&TEXTJOIN(".*|.*"; 1; D2:D)&".*'"; 0)