【问题标题】:Google Sheets Formula to create a 1-column unique output range of all unique values in range of "jagged list"谷歌表格公式创建“锯齿状列表”范围内所有唯一值的 1 列唯一输出范围
【发布时间】:2017-08-06 13:57:09
【问题描述】:

文档:https://docs.google.com/spreadsheets/d/1N4cGw5eUq_3gCJh1w39qVatX9KV1_Hr-AqRHj_nbckA/edit?usp=sharing


数据预期

Current Class!H3,表格数据是下拉菜单中显示的数据。

这个数据直接来自Meta!B7:B...

...它可以来自Students!$J$5:$O 的列之一。该列由Current Class!B3中的值确定

      Current               Expected  | Example Data        Expect
   ---------------          --------  | ------------        ------
1) M1, M2, M3, M4             M1      |  1) M1, M2   --->   M1
2) M2                         M2      |                     M2
3) M3                 --->    M3      | --------------------------
4) M4                         M4      |  1) T4              M2
5) M5                         M5      |  2) M2       --->   T4
6) M4, M5, M6                 M6      |  3) TH3             TH3

您可能可以确定,我在单行中有一个可能的项目列表(这表明 1 名学生在一个特定房间有多个班级 - 本例为 Yale 教室)。

我想要将列表分成单独的项目,并生成一个只有唯一值的 1 列输出范围。

我尝试使用SPLIT() 函数。虽然这将每个项目分开,但我找不到将结果展平为仅 1 列的解决方案。但现在我在 Meta!B7 中有以下公式 ...

=iferror(Sort(Unique(Filter(Students!$J$5:$O, Find($B$6, Students!$J$4:$O$4) > 0 )), 1, true), "")
.

【问题讨论】:

    标签: filter google-sheets excel-formula flatten


    【解决方案1】:

    编辑:哎呀,忘记排序了。

    这似乎有效:

    =sort(unique(transpose(split(substitute(JOIN(", ",offset(Students!$I$5:$I$91,0,match($B$6,Students!$J$4:$O$4))),",","")," ",TRUE))),1,TRUE)
    

    它:

    • 偏移以找到合适的房间参考,
    • 将所有行连接成一个字符串,用“,”分隔每个值,
    • 删除所有逗号,并以空格 (" ") 分割字符串,
    • 转置以获得一组行,然后挑选出唯一的行。

    有趣的挑战!

    【讨论】:

    • 哇,太棒了!没想到这么快就有结果。我需要一些时间来解决这个问题。我必须稍作修改才能根据Classes!B5:B 对数据进行排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多