我正在构建一个电子表格,可用于导入然后过滤wireshark捕获.csv。我们的想法是 - 将.csv导入第二个选项卡,在第一个选项卡上,您可以根据许多包含/排除过滤器显示数据。这是一张虚拟表格供参考:
https://docs.google.com/spreadsheets/d/17TtZHRiXCaH1XClq5SGRdIuyLZnMOrl6Ygrbfo9BbfM/edit?usp=sharing
正如您在电子表格中看到的,我有四个可能的“包含”值和四个可能的“排除”值,每个值都是通过选择下拉列表来确定的。目的是使单元格A6中的QUERY()函数显示基于这些过滤器的数据 Example of the filter at work
我知道如何使用WHERE为单个过滤条件执行此操作:
=查询('导入CSV在这里'!1:349,“select * where(”& B4&“=”& B2&“)”)
如何针对多种过滤条件进行操作:
= query('Import CSV Here'!1:349,“select * where(”& B4&“=”& B2&“)和(”& C4&“=”& C2&“ )“)
我无法弄清楚如何编写QUERY函数,以便它只在非空白的过滤列的WHERE条件中因素(因此已从其下拉菜单中主动填充)。有没有一种有效的方法呢?
答案 0 :(得分:1)
您可以将每个过滤条件包装在if子句中,如果为空,则使用put得到的值为true。
=query(
'Import CSV Here'!1:349,
"select * WHERE " &
IF(ISBLANK(B2), "1=1", B4 & "=" & B2) &
" and " & IF(ISBLANK(C2), "1=1", C4 & "=" & C2) )