【问题标题】:Manual data tagging and lookup手动数据标记和查找
【发布时间】:2020-02-04 14:51:53
【问题描述】:

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

假设我们存储有关某些产品的信息。我们有红苹果、梨、西瓜、黄瓜、辣椒和面包。我们将它们存储在 A 列中名为“Data”的工作表中。接下来的列被标签占据,比如 Red Apples 是 Red、Sweet、Fruit、Unpacked;辣椒是红色的,辣的,素食的,包装好的;面包刚刚包装好。

然后在另一张纸上,我们有一个专用范围,例如 A1:A10,它可以接受任何数据标签,例如 Spicy 或 Packed。我需要的是当有人在这个范围内输入 Spicy and Packed 时,它会查找所有 Spicy 和 Packed 的项目并显示它们,所以在这种情况下它会在 B1 单元格中显示 Peppers。

回顾一下:Data!A:A - 条目名称,Data!B:Z - 标签,Main!A1:A10 - 用户输入的标签,Main!B:B - 带有标签的条目,对应于输入的标签A1:A10。

我试图使用FILTER,但我不知道如何选择合适的条件范围。我觉得这在这个系统中应该是可能的,我真的不想深入到脚本领域。

【问题讨论】:

  • 您需要通过用户输入来完成还是只使用谷歌表格过滤功能?
  • 它应该通过用户输入来控制,它仅用于演示和组织目的。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    您需要添加一个帮助列并使用此公式计算您的项目从列出的标签中有多少标签

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

    【讨论】:

      【解决方案3】:

      如果Data 工作表如下所示:

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

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


      spreadsheet demo


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

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

      【讨论】:

        猜你喜欢
        • 2021-06-10
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 2011-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        相关资源
        最近更新 更多