如何将EXcel中同一列单元格内内容相同的项目在另一列单独显示出来?
推荐于2016-05-21 · 知道合伙人软件行家
知道合伙人软件行家
向TA提问 私信TA
这个问题的难点是取不重复值的公式,计数直接用COUNTIF函数就可以了。
D2输入数组公式,取不重复值:
=OFFSET(B$1,MATCH(,COUNTIF(D$1:D1,B$2:B$12),),)&""
如下图
E2输入一般公式
=IF(D2="","",COUNTIF(B:B,D2))
选定D2:E2,公式下拉复制就可以了,结果如下图
知识扩展:
1、数组公式,是标识为数组计算的公式,输入方法是:
在输入公式时,按Ctrl+Shift+Enter组合键确认输入,Excel将自动在公式外面嵌套一对大括号,如D2公式,输入后,在编辑栏可以看到公式变成
{=OFFSET(B$1,MATCH(,COUNTIF(D$1:D1,B$2:B$12),),)&""}
2、OFFSET语法
OFFSET(reference, rows, cols, [height], [width])
OFFSET 函数语法具有下列参数:
Reference 必需。作为偏移量参照系的引用区域。Reference 必须为对单元格或相连单元格区域的引用;否则,OFFSET 返回错误值 #VALUE!。
Rows 必需。相对于偏移量参照系的左上角单元格,上(下)偏移的行数。如果使用 5 作为参数 Rows,则说明目标引用区域的左上角单元格比 reference 低 5 行。行数可为正数(代表在起始引用的下方)或负数(代表在起始引用的上方)。
Cols 必需。相对于偏移量参照系的左上角单元格,左(右)偏移的列数。如果使用 5 作为参数 Cols,则说明目标引用区域的左上角的单元格比 reference 靠右 5 列。列数可为正数(代表在起始引用的右边)或负数(代表在起始引用的左边)。
Height 可选。高度,即所要返回的引用区域的行数。Height 必须为正数。
Width 可选。宽度,即所要返回的引用区域的列数。Width 必须为正数。
本例中省略Height和Width,表示返回Reference相同大小的区域。
3、MATCH函数语法:
MATCH(lookup_value, lookup_array, [match_type])
MATCH 函数语法具有下列参数 :
lookup_value 必需。需要在 lookup_array 中查找的值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。
lookup_value 参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。
lookup_array 必需。要搜索的单元格区域。
match_type 可选。数字 -1、0 或 1。match_type 参数指定 Excel 如何在 lookup_array 中查找 lookup_value 的值。此参数的默认值为 1。
本示例中,match_type 为0,表示为精确查找。
=INDEX(B:B,MIN(IF(COUNTIF(D$1:D1,B$2:B$11),4^8,ROW($2:$11))))&""
数组公式,按CTRL+SHIFT+回车键结束公式,下拉。
E2公式:
=COUNTIF(B:B,D2)
下拉
可否解释一下这个公式的意思?本人菜鸟一个,另外CTRL+SHIFT+回车键起到什么作用
IF(COUNTIF(D$1:D1,B$2:B$11),4^8,ROW($2:$11))
如果D列当前行以上的单元格中包含有B2:B11中的数据,就返回4^8,否则返回对应的行号。
MIN(IF(COUNTIF(D$1:D1,B$2:B$11),4^8,ROW($2:$11)))
取得前一步中所有行号中的最小值。
INDEX(B:B,MIN(IF(COUNTIF(D$1:D1,B$2:B$11),4^8,ROW($2:$11))))
得到最小行号对应的B列中的值。
提示:编辑栏中选黑公式中的某一部分按F9键可显示该步执行情况,可以帮助检查错误和对公式的理解。