手动数据标记和查找

时间:2019-10-07 10:04:59

标签: google-sheets filter google-sheets-formula array-formulas google-sheets-query

我需要一个允许通过不同文本标签过滤条目的系统。

说我们存储有关某些产品的信息。我们有红苹果,梨,西瓜,黄瓜,辣椒和面包。我们将它们存储在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,但是我不知道如何选择适当的条件范围。我觉得在此系统中应该可以实现这一点,我真的不想钻研脚本领域。

3 个答案:

答案 0 :(得分:1)

这可以通过使用帮助器列来收集所有标签,然后收集=query()公式来实现。

1) 首先使用=join()=textjoin()创建一个多标签列,捕获每种产品的所有潜在标签。

Textjoin to multi-tag

2) 然后使用this答案来帮助您创建所需的=query()公式。

Query for result

答案 1 :(得分:0)

有一个非常简单的解决方案。

您需要使用此公式添加一个帮助器列,并计算列出的物品中有多少标签

=SUM(ARRAYFORMULA(COUNTIF(B1:1,'Main'!$A$1:$A$10)))

1

接下来,在演示文稿表中保留一些可输入标签的地方-一次输入一个。就我而言,范围是A1:A10。然后将这个公式粘贴到其他地方

=IFERROR(FILTER(Data!$B:$B,Data!$A:$A=(10-COUNTBLANK($A$1:$A$10))),"")

在那个地方,所有合适的元素都会出现。我还对公式添加了排序功能,原因为何?

2 3

您可以使用更多标签,只需增加标签范围并编辑公式即可,这样当没有输入标签时,COUNTIF会显示0。

答案 2 :(得分:0)

如果Data表看起来像这样:

0

,您需要“建设性”列表,您可以这样做:

=SORT(FILTER(Data!A2:A, REGEXMATCH(TRANSPOSE(QUERY(TRANSPOSE(Data!B2:Z),,999^99)), 
 TEXTJOIN("|", 1, A1:A10))))

0


spreadsheet demo


0

如果您需要“破坏性”列表,请执行以下操作:

=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)))

0