Google 工作表公式,用于创建 "jagged list" 范围内所有唯一值的 1 列唯一输出范围

Google Sheets Formula to create a 1-column unique output range of all unique values in range of "jagged list"

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


数据预期

Current Class!H3处,table数据是显示在下拉菜单中的数据。

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

...可以来自 Students!$J:$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:$O, Find($B, Students!$J:$O) > 0 )), 1, true), "")
.

编辑:糟糕,忘记排序了。

这似乎有效:

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

它:

  • 找到正确房间参考的偏移量,
  • 将所有行连接成一个字符串,每个值用“,”分隔,
  • 删除所有逗号,并在空格 (" ") 上拆分字符串,
  • 转置得到一个行数组,然后挑出唯一的行。

有趣的挑战!