我需要一个允许通过不同文本标签过滤条目的系统。
说我们存储有关某些产品的信息。我们有红苹果,梨,西瓜,黄瓜,辣椒和面包。我们将它们存储在A列中名为“ Data”的工作表中。接下来的列被标签占据,例如Red Apples是Red,Sweet,Fruit,Unpacked;胡椒是红色,麻辣,素类,盒装;面包刚装好。
然后在另一张纸上,我们有一个专用的范围,例如A1:A10,它可以接受任何数据标签,例如Spicy或Packed。我需要的是,当有人在此范围内输入“ Spicy”和“ Packed”时,它会查找“ Spicy”和“ Packed”的所有项目并显示它们,因此在这种情况下,它将在B1单元格中显示Peppers。
回顾:Data!A:A-条目名称,Data!B:Z-标签,Main!A1:A10-用户输入的标签,Main!B:B-具有标签的条目,与在其中输入的标签相对应A1:A10。
我试图使用FILTER
,但是我不知道如何选择适当的条件范围。我觉得在此系统中应该可以实现这一点,我真的不想钻研脚本领域。
答案 0 :(得分:1)
这可以通过使用帮助器列来收集所有标签,然后收集=query()
公式来实现。
1)
首先使用=join()
或=textjoin()
创建一个多标签列,捕获每种产品的所有潜在标签。
2)
然后使用this答案来帮助您创建所需的=query()
公式。
答案 1 :(得分:0)
有一个非常简单的解决方案。
您需要使用此公式添加一个帮助器列,并计算列出的物品中有多少标签
=SUM(ARRAYFORMULA(COUNTIF(B1:1,'Main'!$A$1:$A$10)))
接下来,在演示文稿表中保留一些可输入标签的地方-一次输入一个。就我而言,范围是A1:A10。然后将这个公式粘贴到其他地方
=IFERROR(FILTER(Data!$B:$B,Data!$A:$A=(10-COUNTBLANK($A$1:$A$10))),"")
在那个地方,所有合适的元素都会出现。我还对公式添加了排序功能,原因为何?
您可以使用更多标签,只需增加标签范围并编辑公式即可,这样当没有输入标签时,COUNTIF会显示0。
答案 2 :(得分:0)
如果Data
表看起来像这样:
,您需要“建设性”列表,您可以这样做:
=SORT(FILTER(Data!A2:A, REGEXMATCH(TRANSPOSE(QUERY(TRANSPOSE(Data!B2:Z),,999^99)),
TEXTJOIN("|", 1, A1:A10))))
如果您需要“破坏性”列表,请执行以下操作:
=ARRAYFORMULA(SORT(QUERY({Data!A2:A, TRANSPOSE(QUERY(TRANSPOSE(Data!B2:Z),,999^99))},
"select Col1 where "&TEXTJOIN(" and ", 1, IF(A1:A10<>"",
"Col2 contains '"&A1:A10&"'", ))&"", 0)))