Filter Google Sheets Formula创建一个1列唯一输出范围,范围为“0”的所有唯一值;“锯齿状列表”;

Filter Google Sheets Formula创建一个1列唯一输出范围,范围为“0”的所有唯一值;“锯齿状列表”;,filter,google-sheets,excel-formula,flatten,Filter,Google Sheets,Excel Formula,Flatten,文件: 数据期望 在当前类中!H3,表格数据是下拉菜单中显示的数据 此数据直接来自Meta!B7:B =iferror(Sort(Unique(Filter(Students!$J$5:$O, Find($B$6, Students!$J$4:$O$4) > 0 )), 1, true), "") . …可以来自学生的一个专栏$J$5:$O。该列由当前类中的值确定!B3 Current Expected | Example Data

文件:


数据期望 在
当前类中!H3
,表格数据是下拉菜单中显示的数据

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

=iferror(Sort(Unique(Filter(Students!$J$5:$O, Find($B$6, Students!$J$4:$O$4) > 0 )), 1, true), "")
.
…可以来自
学生的一个专栏$J$5:$O
。该列由
当前类中的值确定!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
正如您可以确定的那样,我在一行中有一个可能的项目列表(这表示一个学生在一个特定的房间里有多个班级-本例为
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), "")
.

编辑:哎呀,忘了分类了

这似乎有效:

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

  • 偏移以查找正确的房间参照
  • 将所有行合并为一个字符串,并用“,”分隔每个值
  • 删除所有逗号,并拆分空格(“”)上的字符串
  • 转置以获得一个行数组,然后选择唯一的行

有趣的挑战

哇,太棒了!我没想到这么快就得到结果。我需要一段时间才能明白这一点。我确实需要稍微修改一下,以便根据
类对数据进行排序!B5:B