如何使用 query() 在 google 表格中构建搜索表单?
How to build a search form in googlesheets with query()?
要求的行为:
我想在 Google 表格中创建一个搜索表单来查询我用作数据库的 table。
- 用户应该可以通过多次搜索来查询table
用户可以在 sheet.
的单元格中键入的类别
- 如果用户没有输入搜索字符串,那么所有项目
应该显示。
- 此外,用户应该能够在
"including OR" 和 "excluding AND" 搜索。
原始 table 与搜索表单位于不同的 sheet 上。最终的搜索表单应该有 10 个以上的可搜索类别。
当前状态
由于原始 table 与搜索表单的 sheet 不同,我的想法是通过动态 query() 函数导入 table。
我创建了两个输入搜索输入字段和一个用户可以在 "OR" 和 "AND" 之间切换的字段。我还创建了一个连接这 3 个搜索词的查询函数。
"OR" 和 "AND" 搜索之间的变化有效(使用第一种方法)。
第一种方法:
=QUERY('Geschäftsvorfälle'!A2:AG1000, "select * WHERE A="&B4&" "&D1&" B='"&B5&"'")
第二种方法:
=QUERY('Geschäftsvorfälle'!A2:AG1000, "select * " &if(B5="Alle",, "WHERE B='"&B5&"'") &if(B4="",, "WHERE A="&B4&""))
问题
第一种方法适用于 "OR" 搜索,但如果我使用多个搜索词,则会返回一个空的 sheet。如果将一个搜索词留空,它还会抛出 "VALUE" 错误。如果我使用多个搜索词,即使应该有匹配的行,第二种方法也会引发 "VALUE" 错误。
有没有办法让这种搜索表单在 Google 表格中工作?如果是,是否可以使用 query()
来完成,我该怎么做?您能否提供一些示例屏幕截图或代码?
屏幕截图
搜索表单:
组合查询:
尝试:
=QUERY('Geschäftsvorfälle'!A2:AG,
"where "&TEXTJOIN(" "&D1&" ", 1,
IF(B4<>"", " A="&B4, ),
IF(B5<>"", " B='"&B5&"'", ),
IF(B6<>"", " lower(F) contains '"&LOWER(B6)&"'", )), 1)
要求的行为:
我想在 Google 表格中创建一个搜索表单来查询我用作数据库的 table。
- 用户应该可以通过多次搜索来查询table 用户可以在 sheet. 的单元格中键入的类别
- 如果用户没有输入搜索字符串,那么所有项目 应该显示。
- 此外,用户应该能够在 "including OR" 和 "excluding AND" 搜索。
原始 table 与搜索表单位于不同的 sheet 上。最终的搜索表单应该有 10 个以上的可搜索类别。
当前状态
由于原始 table 与搜索表单的 sheet 不同,我的想法是通过动态 query() 函数导入 table。
我创建了两个输入搜索输入字段和一个用户可以在 "OR" 和 "AND" 之间切换的字段。我还创建了一个连接这 3 个搜索词的查询函数。 "OR" 和 "AND" 搜索之间的变化有效(使用第一种方法)。
第一种方法:
=QUERY('Geschäftsvorfälle'!A2:AG1000, "select * WHERE A="&B4&" "&D1&" B='"&B5&"'")
第二种方法:
=QUERY('Geschäftsvorfälle'!A2:AG1000, "select * " &if(B5="Alle",, "WHERE B='"&B5&"'") &if(B4="",, "WHERE A="&B4&""))
问题
第一种方法适用于 "OR" 搜索,但如果我使用多个搜索词,则会返回一个空的 sheet。如果将一个搜索词留空,它还会抛出 "VALUE" 错误。如果我使用多个搜索词,即使应该有匹配的行,第二种方法也会引发 "VALUE" 错误。
有没有办法让这种搜索表单在 Google 表格中工作?如果是,是否可以使用 query()
来完成,我该怎么做?您能否提供一些示例屏幕截图或代码?
屏幕截图
搜索表单:
组合查询:
尝试:
=QUERY('Geschäftsvorfälle'!A2:AG,
"where "&TEXTJOIN(" "&D1&" ", 1,
IF(B4<>"", " A="&B4, ),
IF(B5<>"", " B='"&B5&"'", ),
IF(B6<>"", " lower(F) contains '"&LOWER(B6)&"'", )), 1)