Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets Google工作表查询功能中的WHERE条件动态数_Google Sheets - Fatal编程技术网

Google sheets Google工作表查询功能中的WHERE条件动态数

Google sheets Google工作表查询功能中的WHERE条件动态数,google-sheets,Google Sheets,我正在构建一个电子表格,可用于导入和过滤wireshark capture.csv。其思想是-将.csv导入到第二个选项卡中,在第一个选项卡上,您可以基于许多包含/排除过滤器显示数据。以下是供参考的虚拟表: 正如您在电子表格中看到的,我有四个可能的“包含”值和四个可能的“排除”值,每个值都是通过选择下拉列表确定的。其目的是让单元格A6中的QUERY()函数显示基于这些过滤器的数据。 我知道如何在单一过滤条件下使用WHERE: =query('importcsv Here'!1:349,“se

我正在构建一个电子表格,可用于导入和过滤wireshark capture.csv。其思想是-将.csv导入到第二个选项卡中,在第一个选项卡上,您可以基于许多包含/排除过滤器显示数据。以下是供参考的虚拟表:

正如您在电子表格中看到的,我有四个可能的“包含”值和四个可能的“排除”值,每个值都是通过选择下拉列表确定的。其目的是让单元格A6中的QUERY()函数显示基于这些过滤器的数据。

我知道如何在单一过滤条件下使用WHERE:

=query('importcsv Here'!1:349,“select*where(“&B4&“=”&B2&)”)

以及如何针对多个过滤条件执行此操作:

=query('importcsv Here'!1:349,“选择*where('B4&“=”&B2&')和('C4&“=”&C2&'))


我搞不懂的是如何编写查询函数,以便它只在WHERE条件中考虑非空的筛选列(因此已从其下拉菜单中主动填充)。有没有一种有效的方法可以做到这一点?

您可以将每个筛选条件包装在if子句中,并使用put-something,如果它为空,则计算结果为true

=query(
  'Import CSV Here'!1:349,
  "select * WHERE " &
     IF(ISBLANK(B2), "1=1", B4 & "=" & B2) &
     " and " & IF(ISBLANK(C2), "1=1", C4 & "=" & C2) )

您是否尝试过
其中G不为null或H不为null
或其他类似形式的
不为null
“只是尝试使用` where(“&B6&”不为null和“&B8&”=”&B6&')`我相信您可能对查询函数的意图有点偏离,它旨在返回多行。在语句中通常不使用单独的单元格,除非您正在根据单元格中的公共值检查所有行,因此=query('Import CSV Here'!A1:Z349,“select*where B not null”)将返回B有值的每一行,并将第一行作为标题,而不管第一行的值是多少。试着简化一下,看看你得到了什么结果。然后再做一次测试,看看结果。在测试简单的后变得更复杂。这将返回一个分析错误。您能在这样的查询中使用if函数吗?很抱歉,您不能,if的字符串在外部计算,然后所有部分连接在一起,请看我更新的答案是否工作正常!这对我来说是个很好的教训。。。谢谢还有一个问题。。。对于我链接到的示例电子表格,我故意使用数据表中没有任何特殊字符的任意字符串。我这样做是因为我想先弄清楚动态条件。但实际上,MAC_ADDRESS和DESTINATION值中包含“.”和“:”字符,这打破了公式,因为查询无法解析字符串。我显然无法手动转义字符,因为它们是从下拉菜单中选择的。是否有合适的语法可以解决此问题?您可以在串联中添加单引号,例如,
…B4&“=”&B2&“”)…