Excel:根据公共单元格值对行中的值进行分组

时间:2017-03-30 18:42:12

标签: excel csv excel-formula

我有一个Excel文件,其中包含一个组列表以及属于它们的用户。我需要生成属于每个组的用户列表。关键点:虽然这是perl,python或任何其他编程语言中的一项微不足道的任务,但我想在Excel中完成所有操作,因此我不必导出到csv,重新导入结果,然后重新输入 - 每次有变化时都要格式化。

文件格式(导出到csv时)类似于:

Group, username, email
Perl Jam, evedder, evedder@pj.com
Perl Jam, mcameron, mcameron@soundgarden.com
Perl Jam, jament, jament@pj.com
Perl Jam, sgossard, sgossard@pj.com
Perl Jam, mmccready, mmccready@pj.com
Soundgarden, mcameron, mcameron@soundgarden.com
Soundgarden, ccornell, ccornell@soundgarden.com
Soundgarden, kthayill, kthayill@pj.com
Soundgarden, bshepherd, bshepherd@pj.com
Temple of the Dog, evedder, evedder@pj.com
Temple of the Dog, ccornell, ccornell@soundgarden.com
Temple of the Dog, jament, jament@pj.com
Temple of the Dog, sgossard, sgossard@pj.com
Temple of the Dog, mmccready, mmccready@pj.com
Temple of the Dog, mcameron, mcameron@soundgarden.com

我最终想要的是:

Group, usernames
Perl Jam, evedder, mcameron, jament, sgossard, mmccready
Soundgarden, mcameron, ccornell, kthayill, bshepherd
Temple of the Dog, evedder, mcameron, ccornell, jament, sgossard, mmccready

1 个答案:

答案 0 :(得分:2)

要获取您的唯一列表,请使用此数组公式:

=IFERROR(INDEX($A$2:$A$16,MATCH(0,COUNTIF($E$1:E1,$A$2:$A$16),0)),"")

作为数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter来确认。如果操作正确,那么Excel会将{}放在公式周围。

放入第一个单元格,按Ctrl-Shift-Enter键,然后向下复制,直到出现空白。

获取用户名:

=IFERROR(INDEX($B:$B,AGGREGATE(15,6,ROW($A$2:$A$16)/($A$2:$A$16=$E2),COLUMN(A:A))),"")

其中$ E2是另一个公式所在的单元格。

然后向上和向下复制。

enter image description here