Google表格公式可以创建1列独特输出范围,其中包含"锯齿状列表"

时间:2017-03-15 17:08:07

标签: filter google-sheets excel-formula flatten

文件: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 个答案:

答案 0 :(得分:3)

编辑:哎呀,忘了排序。

这似乎有效:

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

有:

  • 抵消以找到合适的房间参考,
  • 将所有行连接成一个字符串,其中“,”分隔每个值,
  • 删除所有逗号,并在空格(“”),
  • 上拆分字符串
  • 转置以获取行数组,然后选择唯一的行。

有趣的挑战!