【问题标题】:Splitting a cell containing a list of text values into other cells, depending on the values in the list根据列表中的值,将包含文本值列表的单元格拆分为其他单元格
【发布时间】:2021-01-12 18:19:24
【问题描述】:

我想知道是否可以将包含逗号分隔列表的单元格拆分为多个列,基于可编辑的参考表,使用 Google表格公式而不诉诸Apps 脚本。

我创建了一个简化版本来更好地解释我想要实现的目标。

我看到一张这样的表格:

A2 中有一个颜色名称列表,我希望将它们分类到新的较小列表中的正确列中。理想的解决方案如下所示:

理想情况下,我会使用 B2C2D2 中的公式来执行此操作。哪个单元格中的内容必须是动态的,以便在出现新选项时可以将它们分类到正确的单元格中。

我想,在保持动态列中的内容的同时实现这一目标的最佳方法是将公式与“主”文档中的参考表进行比较。例如:

B2 中的公式将引用表列AC2 将引用表列B

这样公式就不需要编辑 - 我想避免这种情况,因为该系统将用于许多不同的 Google 表格文档。

虽然这当然可以使用 Apps 脚本来实现,但我宁愿使用公式来完成繁重的工作,这样如果有人进一步继承了我的角色,他们就不需要了解 Apps Script/JS 等来维护和/或修改系统。

我想这个过程涉及", "SPLITJOIN,可能还有LOOKUP(或VLOOKUP),但我不知道它是如何(或什至)可能的.

任何意见将不胜感激!

谢谢

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    粘贴在REDS下并向右拖动:

    =INDEX(REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
     IF(REGEXMATCH($A11:$A, "(?i)"&
     TRANSPOSE(FILTER(master!A2:A8, master!A2:A8<>""))), 
     TRANSPOSE(FILTER(master!A2:A8, master!A2:A8<>""))&",", )),,9^9))), ",$", ))
    


    更新:

    =ARRAYFORMULA(IFNA(VLOOKUP(""&ROW(A11:A), SUBSTITUTE(REGEXREPLACE(TRIM(
     SPLIT(FLATTEN(QUERY(QUERY(SPLIT(FLATTEN(ROW(A11:A)&"♠♣"&IFERROR(TRIM(
     SPLIT(LOWER($A11:$A), ","))&"♦")), "♣"), 
     "select max(Col2) 
      where Col2 matches '^"&TEXTJOIN("$|^", 1, IF(B2:B8="",,LOWER(B2:B8)&"♦"))&"$' 
      group by Col2 pivot Col1"),,9^9)), "♠")), "♦$", ), "♦", ","), 2, 0)))
    

    【讨论】:

    • 正是我需要的!非常感谢您的帮助。
    • 我需要添加什么到REGEXMATCH 以便它只匹配参考表中的确切单词?因此,如果“皇家蓝”在颜色列表中,它不会同时与“蓝色”和“皇家蓝”匹配
    • 再次感谢@player0!
    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多