Google sheets GoogleSheet:使用下拉框和复选框(数据类型:text&;True/False)过滤数据

Google sheets GoogleSheet:使用下拉框和复选框(数据类型:text&;True/False)过滤数据,google-sheets,Google Sheets,首先,先谢谢你 在发布这篇文章之前,我已经搜索并尝试了来自多个来源的一些指南。但是,在构造公式字符串时没有成功。使用Query+其他功能过滤googlesheet(GS)中的数据对我来说是新事物,我还在学习 目标: 使用下拉列表和两种类型的复选框(数据类型:text&True/False)。用户可以选择一个或多个复选框来筛选数据 问题: 未能成功构造公式字符串以组合下拉框和复选框 我的GS示例取自一个解决方案,该解决方案使用一个简单的公式字符串作为复选框(数据类型:True/False)来创建过

首先,先谢谢你

在发布这篇文章之前,我已经搜索并尝试了来自多个来源的一些指南。但是,在构造公式字符串时没有成功。使用Query+其他功能过滤googlesheet(GS)中的数据对我来说是新事物,我还在学习

目标: 使用下拉列表和两种类型的复选框(数据类型:text&True/False)。用户可以选择一个或多个复选框来筛选数据

问题: 未能成功构造公式字符串以组合下拉框和复选框

我的GS示例取自一个解决方案,该解决方案使用一个简单的公式字符串作为复选框(数据类型:True/False)来创建过滤器,并希望我可以从中开发


再次感谢

这似乎符合你的要求。在结果表的E6中尝试以下公式。或者看看我的标签答案GK,这是我添加到你的工作表中的

=iferror(if(or(C5:C13),
            QUERY ('Test string DB'!A3:H12, "Select * WHERE "  &
                           IF(B2="","C <>'' "," C = '"&B2&"'") &
                           IF(C5,   " and D matches '" & B5    & "' ",) &
                           IF(C6,   " and D matches '" & B6    & "' ",) & 
                           IF(C7,   " and D matches '" & B7    & "' ",) &  
                           IF(C8,   " and E matches '" & B8    & "' ",) &  
                           IF(C9,   " and E matches '" & B9    & "' ",) &  
                           IF(C10,  " and E matches '" & B10   & "' ",) &  
                           IF(C11, " and F=TRUE", )            &
                           IF(C12, " and G=TRUE", )            &
                           IF(C13, " and H=TRUE", )),
            QUERY ('Test string DB'!A3:H12,"select * " & if(B2=""," "," where C = '"&B2&"'") ,0)),
  "No results - Reduce your selected criteria")
这将添加三个标题标签,然后在J、K、L列中查找真值,并将它们返回为“Y”s


我假设您希望功能和可访问复选框具有包容性,而便利设施具有排他性。以下是一个工作示例:

以下是E6中的公式:

=iferror(QUERY(QUERY('Teststring DB'!A3:H12,"select * where C = """&B2&""" AND (D =  """& if(C5 = true,B5,"")&""" OR D = """& if(C6 = true,B6,"")&""" OR D =  """& if(C7 = true,B7,"")&""") OR (E =  """& if(C8 = true,B8,"")&""" OR E = """& if(C9 = true,B9,"")&""" OR E =  """& if(C10 = true,B10,"")&""") ",0),"select * " & if(C11 = true,"where Col6 = true","")&" " & if(C12 = true,if(C11 = true,"AND Col7 = true","where Col7 = true"),"")&" " & if(C13 = true,if(or(C11 = true,C12 = true),"AND Col8 = true","where Col8 = true"),"")&" ",0),QUERY('Teststring DB'!A3:H12))

伟大的它起作用了!是时候让我了解字符串是如何工作的了。非常感谢@JLMosherExcellent!真的很感激!现在是我了解公式字符串如何工作的时候了。非常感谢你@KirkG13我喜欢你把“真”改为“Y”的部分。它看起来真的很整洁。没想到我能做到。至于您关于将“功能”和“可访问”数据结构更改为“便利设施”的建议,同意,必须进行更改。我想知道,如果我想保留“Feature”和“Accessible by”的数据结构,但允许多个选择,那么公式字符串会更“复杂”吗?tqvm!这完全取决于过滤器的用途。如果你检查淋浴和插件,你想要的露营地都有,或露营地有一个。功能相同-湖泊和海滩,或湖泊或海滩。第一个是不可能的,因为您的数据结构,所以可以更改公式以对功能和访问进行OR比较。但是如果你改变你的数据结构,公式会变得简单一点。谢谢!谢谢你的澄清。我得多读点书,多试几次,才能明白这一点。我计划为Ownerhsip下拉选择包括一个默认的“全部”(将在数据验证中更改),以便在用户选择Public等之前始终显示所有。我应该修改公式的哪一行/部分,1.QUERY('teststringdb'!A3:H12,“Select*WHERE”&IF(B2=“”,“C”“,“C=”,“C=”,“B2&“”),[或]2….&IF(B2=“”,“WHERE C=”,“B2&“))
=iferror(QUERY(QUERY('Teststring DB'!A3:H12,"select * where C = """&B2&""" AND (D =  """& if(C5 = true,B5,"")&""" OR D = """& if(C6 = true,B6,"")&""" OR D =  """& if(C7 = true,B7,"")&""") OR (E =  """& if(C8 = true,B8,"")&""" OR E = """& if(C9 = true,B9,"")&""" OR E =  """& if(C10 = true,B10,"")&""") ",0),"select * " & if(C11 = true,"where Col6 = true","")&" " & if(C12 = true,if(C11 = true,"AND Col7 = true","where Col7 = true"),"")&" " & if(C13 = true,if(or(C11 = true,C12 = true),"AND Col8 = true","where Col8 = true"),"")&" ",0),QUERY('Teststring DB'!A3:H12))