体验零代码搭建

获取Excel单元格区域中的不重复值

网友投稿  ·  2023-11-21 21:11  ·  在线excel  ·  阅读 441


Excel是许多职场人士常用的烦恼之源,学习相关技巧需耗费大量时间。简道云作为一款办公神器,能很好地替代Excel。它是一个在线表单和数据管理工具,支持PC端和手机微信浏览器操作。除此之外,简道云还能辅助企业进行流程审批、财务报销、人事管理等业务管理,满足不同需求。

在一个单元格区域中含有重复值,使用公式来获取该区域中的不重复值。

在一个单元格区域中含有重复值,使用公式来获取该区域中的不重复值。

获取Excel单元格区域中的不重复值

例如,下图所示的工作表单元格区域A1:A13,将其命名为Data。在该区域中,含有很多重复值。现在要获取该区域中的不重复值。

先不看答案,动手试一试。

公式思路

首先求出单元格区域Data中每个值在区域中第1次出现的行号,然后根据行号取出这些值。

公式解析

在单元格区域C1:C13中输入下面的数组公式:

=INDEX(Data,SMALL(IF(MATCH(Data,Data,0)=ROW(INDIRECT(“1:”&ROWS(Data))),MATCH(Data,Data,0),””),ROW(INDIRECT(“1:”&ROWS(Data)))))

按Ctrl+Shift+Enter组合键,即可得到区域Data中不重复值,如下图所示:

公式中,MATCH(Data,Data,0)得到数组{1;1;1;4;4;4;7;7;7;10;10;7;1},即区域Data中每个值在该区域中出现的行号。ROW(INDIRECT(“1:”&ROWS(Data)))得到数组{1;2;3;4;5;6;7;8;9;10;11;12;13},INDIRECT函数将“1:13”转换成行区域$1:$13。

MATCH(Data,Data,0)=ROW(INDIRECT(“1:”&ROWS(Data)))即上述两个数组相比较,得到数组{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE},IF函数根据该数组获取MATCH(Data,Data,0)所得数组中的值,即{1;””;””;4;””;””;7;””;””;10;””;””;””},SMALL函数分别取这个数组的第1、2、3、…、13最小值,即{1;4;7;10;””;””;””;””;””;””;””;””;””},将此数组作为INDEX 函数的参数,分别取区域Data中对应行的值。

从上图所示的工作表中可以看出,对于数组公式中多余的单元格会显示#NUM!。使用下面的数组公式避免显示#NUM!。

=IFERROR(INDEX(Data,SMALL(IF(MATCH(Data,Data,0)=ROW(INDIRECT(“1:”& ROWS(Data))),MATCH(Data,Data,0),””),ROW(INDIRECT(“1:”& ROWS(Data))))),””)

IFERROR函数在错误值时输入空。

小结

ROW函数中不能再包括其它求值的函数,此时使用INDIRECT函数来间接引用。

IFERROR函数是Excel 2007及其后的版本中的函数,当第一个参数为错误值时,将另一个参数作为返回值。若要在Excel 2013中得到同样的结果,则要将IF函数和ISERR函数结合使用。

公式中蕴含着一些通用思想,可以在其他类似情形中借鉴。


获取当前Excel单元格所在列的列字符 << 上一篇
2023-11-21 21:11
统计Excel单元格区域中不重复值的数量
2023-11-21 21:11
下一篇 >>

相关推荐