我有一个Google电子表格,我想运行QUERY
功能。但我希望WHERE
语句检查一系列值。我基本上在寻找在SQL中使用IN
语句的内容 - Google Spreadsheets中的IN
等价物是什么?所以现在我有:
=QUERY(Sheet1!A3:AB50,"Select A,B, AB WHERE B='"& G4 &"'")
这很有效。但我真正需要的是相当于:
=QUERY(Sheet1!A3:AB50,"Select A,B, AB WHERE B='"& G4:G7 &"'")
当然,该陈述失败了。如何获得一系列值的位置?这些是文本值,如果这会产生影响。
答案 0 :(得分:4)
绝招Zolley!这是一个小改进。
代替:
= CONCATENATE(G3,“ |”,G4,“ |”,G5,“ |”,G6,“ |”,G7)
我们可以使用
= TEXTJOIN(“ |”,1,G3:G7)
当将每个单元格一个接一个地添加到公式中毫无意义时,这也允许我们使用更大的数组。
UPD:
进一步,我尝试将两个公式组合在一起以排除帮助单元,然后我们开始:
= QUERY(Sheet1!A3:AB50,“选择A,B,AB,其中B匹配'^。(”&TEXTJOIN(“ |”,1,G3:G7)&“)。 $'“)
在我自己的项目中使用了它,效果很好!
答案 1 :(得分:3)
虽然我现在不是完美的答案,但我可以找到问题的解决方法,可以在少量数据中使用(希望这就是这里的情况:))
第一步:你应该创建一个"辅助细胞"其中你将G4:G7细胞连接到" |"字符:
= CONCATENATE(G3," |",G4," |",G5," |",G6," |& #34;,G7) - 让我们说它是细胞H2的内容。
现在,您应该按如下方式更改上述查询:
= QUERY(Sheet1!A3:AB50,"选择A,B,AB,其中B匹配' ^。*("& H2&")。* $ '&#34)
这应该可以解决问题。基本上我们"匹配"运算符允许使用正则表达式,这也允许使用|来构造符号
正如我所说,它是一种解决方法,它有缺点,但我希望它会有所帮助。
答案 2 :(得分:-2)
我有同样的问题,在我的研究中遇到了你的问题。你的连接想法让我思考。问题是我在where子句中使用的范围是动态的。行数会发生变化。这让我进入了Join功能,这让我想到了这个:
=(QUERY('Sheet1!A3:AB50,"select A where B = "& JOIN(" OR B = ",ARRAY_CONSTRAIN($A$5:A,COUNTIF($G$4:$G,">0"),1)) &"")
COUNTIF
计算包含数据的行数。我在这个范围内使用数字,所以"!= ''"
可能比">0"
更合适。 ARRAY_CONSTRAIN
创建一个包含仅包含数据的单元格的数组。 JOIN
将范围转换为where子句的查询语言。
需要在JOIN
函数中使用基本相同文本的where子句启动where子句。请注意,我使用的是数字,因此我不需要围绕值‘’
。这适用于我的电子表格,我希望它有所帮助。