有一个很好的解释如何使用数组公式here提取不同值的列表
基本公式是这样的
=IFERROR(INDEX(B$2:B$19, MATCH(0, COUNTIF(D$1:D1, B$2:B$19), 0)),"")
这将为您提供 B 列中的所有不同值。
通过一些调整你可以得到
=IFERROR(INDEX(B$2:B$19, MATCH(0, COUNTIF(D$1:D1, IF(A$2:A$19=D$1,B$2:B$19,D$1)), 0)),"")
也可以作为在 D2 中输入的数组公式,在 D1 中使用“a”来选择仅在 A 列中带有“a”的那些。
必须用CTRL+shift+enter
输入
原来的公式是由
(1) 使用 COUNTIF 创建一个数组,其中每个元素对应于 B2:B19 范围内的一个单元格。如果 B2:B19 范围内的字符串已经在当前单元格上方的一个单元格中(最初是 D2),则 COUNTIF 将在数组中放入 1:如果不是,则将放入 0。
(2) 使用 MATCH 查找数组中第一个零的位置(对应于下一个未添加到列表中的字符串)。
(3) 使用 INDEX 查找 B2:B19 中该位置的字符串。
我选择通过添加一个初步步骤来修改它
(0) 如果 A2:A19 中对应的字母是“a”,则像以前一样使用 B2:B19 - 如果不是,则使用“a”。 “a”已在 D1 中,因此不会添加到 D 列的列表中。
http://www.get-digital-help.com/2009/03/30/how-to-extract-a-unique-list-and-the-duplicates-in-excel-from-one-column/