谷歌表格公式创建“锯齿状列表”范围内所有唯一值的 1 列唯一输出范围

Posted

技术标签:

【中文标题】谷歌表格公式创建“锯齿状列表”范围内所有唯一值的 1 列唯一输出范围【英文标题】:Google Sheets Formula to create a 1-column unique output range of all unique values in range of "jagged list" 【发布时间】: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), "")
.

【问题讨论】:

【参考方案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 对数据进行排序。

以上是关于谷歌表格公式创建“锯齿状列表”范围内所有唯一值的 1 列唯一输出范围的主要内容,如果未能解决你的问题,请参考以下文章

谷歌表格中带有 ifs、isblank 和 AND/OR 的数组公式

谷歌表格中的条件格式不适用于重复项

谷歌表格 - 根据公式内的另一个单元格值设置行号?

降低这个公式的复杂性?

合并来自谷歌表格列的记录

引用查询函数中的单元格不包含在谷歌表格的范围内