我正在尝试根据多个关键字过滤属性列表(例如“酷室内”、“露台/庭院”)。这是一个基本的解释:
我要过滤的范围位于标题为“1”的工作表上,范围从 A2:O25 开始。该范围是受保护范围,称为“Properties_List”。每行代表不同的属性,每列代表不同的信息(名称、区域、价格、尺寸等)。在工作表“1”的 AA 列中,我有一个用逗号分隔的每个属性的关键字列表。 AA 列中的示例单元格如下所示:Mountain、Lake、Terrace/Patio、Multi-Unit、Garden。 AA 列中的范围是受保护范围,称为“Filter_List”,范围从 AA2:AA25。
[注意:“Filter_List”中的每一行都使用“JOIN”函数,该函数将从 Q-Y 列中选择多个关键字。 Q-Y 列中的每个单元格都包含下拉框,您可以在其中从 25-30 个关键字中选择一个术语。]
我为单独的工作表(工作表“2”)添加了 Code.gs 脚本。相同的保管箱(如上所述)位于工作表“2”的单元格 A4 中。在脚本中,用户可以从单元格 A4 的下拉框中选择关键字,该选择将显示在单元格 B4 中。此外,用户可以选择更多关键字,并且这些选择将出现在单元格 B4 中先前选择之后(以逗号分隔)。经过三个单独的选择后,单元格 B4 会像这样:山、花园、湖
我正在努力做的是:
根据单元格 B4 中与“Filter_List”中的文本字符串匹配的选择,过滤工作表“2”的单元格 A7 中的“Properties_List”。
因此,“Filter_List”中相应单元格中包含单词“Mountain”AND“Garden”AND“Lake”的任何属性都将显示在工作表“2”的 A7(及下方)中。
在我的尝试中,我还在工作表“2”中指定了单元格 C36:H36 以“抓取”单元格 B4 中的每个选择。因此,在上面的示例中,单元格 C36 将显示“山”,单元格 D36 将显示“花园”,单元格 E36 将显示“湖”,单元格 F36:H36 将显示空白。
我在工作表“2”的单元格 A7 中使用了以下函数:
=FILTER(Properties_List,REGEXMATCH(Filter_List,C36),REGEXMATCH(Filter_List,D36),REGEXMATCH(Filter_List,E36),REGEXMATCH(Filter_List,F36),REGEXMATCH(Filter_List,G36),REGEXMATCH(Filter_List,H36))
这样的作品?但并不完全。我发现该函数还将根据选择的顺序进行过滤。换句话说,只有带有“Filter_List”字符串的属性,其中“Mountain”位于“Garden”之前,“Garden”位于“Lake”之前,才会保留。我希望过滤器显示一个属性,其中字符串中的任何位置都包含“山”、“花园”和“湖”(所有三个)。
这有道理吗?到底有没有?哈哈。感谢您的帮助,如果我的做法有误,请告诉我!
=query({Sheet1!A1:C},"select Col1, Col2, Col3 where Col1 is not null "&"and Col3 contains '"&textjoin(" and Col3 contains ",1,split(regexreplace(B2,"(\w+)","'$1'"),",")))
样本数据
报告样本
逻辑