【问题标题】:Google Sheets/Excel formula to reduce comma-separated lists to a particular subset谷歌表格/Excel公式将逗号分隔的列表减少到特定的子集
【发布时间】:2016-12-02 02:45:02
【问题描述】:

在数据库提取中,每一行都有一个单元格,其中包含一个以逗号分隔的标签列表。我需要一个公式将这些单元格中的每一个过滤到特定的子集。

我有一个基本的工作版本,但它非常冗长。

标签列表在 C 列。 我要保留的标签子集当前位于 A1:A10 的单独工作表(称为子集)上。

我的基本版本为 A1:A10 中的每个单元格连接一次相同的子公式。每个子公式测试 FIND(SubsetTag, TagList) 是否返回一个数字,如果是,则输出 SubsetTag 后跟“,”以构建一个包含所有匹配项的字符串,例如

=IF(ISNUMBER(FIND(Subset!A$1,C2)),Subset!A$1&", ","") & IF(ISNUMBER(FIND(Subset!A$2,C2)),Subset!A$2&", ","") & IF(ISNUMBER(FIND(Subset!A$3,C2)),Subset!A$3&", ","") & IF(ISNUMBER(FIND(Subset!A$4,C2)),Subset!A$4&", ","") & IF(ISNUMBER(FIND(Subset!A$5,C2)),Subset!A$5&", ","") & IF(ISNUMBER(FIND(Subset!A$6,C2)),Subset!A$6&", ","") & IF(ISNUMBER(FIND(Subset!A$7,C2)),Subset!A$7&", ","") & IF(ISNUMBER(FIND(Subset!A$8,C2)),Subset!A$8&", ","") & IF(ISNUMBER(FIND(Subset!A$9,C2)),Subset!A$9&", ","") & IF(ISNUMBER(FIND(Subset!A$10,C2)),Subset!A$10&", ","")

有没有使用公式的好方法? (我想避免使用脚本)

理想情况下,我想概括公式,以便在子集超过 A1:A10 时不必更新它,并且希望避免尾随逗号 :)

【问题讨论】:

    标签: excel google-sheets excel-formula


    【解决方案1】:

    您可以使用 数组公式 结合 CONCAT()

    来做到这一点
    =LEFT(CONCAT(IF(ISNUMBER(FIND(M8:M10,J8)),M8:N10,"")),LEN(CONCAT(IF(ISNUMBER(FIND(M8:M10,J8)),M8:N10,"")))-2)
    

    地点:

    • M8:M10 是标签列表,
    • N8:N10 是字符串“,”的列表
    • J8 是您要搜索的字符串

    确保在完成公式后按 Control + Shift + Enter。

    LEFT() 部分用于删除最后的逗号。

    【讨论】:

      【解决方案2】:

      这是一个谷歌表格解决方案,使用regexmatch:

      =join(",", filter(Subset!A1:A10, regexmatch(C2, "\b" & Subset!A1:A10 & "\b")))
      

      A1:A10 范围内的集合被过滤到字符串 C2 与 \btag\b 形式的正则表达式匹配的那些标签,这意味着 C2 必须包含作为单独单词的标签(\b 是单词边界) .然后将过滤后的数组连接到一个新的逗号分隔字符串中。

      如果 C2 中不包含任何标签,则公式返回错误消息 #N/A。如果在这种情况下您更喜欢空输出,请将公式包装在 =iferror() 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        相关资源
        最近更新 更多