又是序号问题!大神写了一段代码,瞬间搞定几小时的工作量!

送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

一个群友问了这样一个排序的问题,如下图。

条件:如果“数据”第一次出现,那么计算“数据”在C列不重复的的排位作为序号;如果“数据”第二至第N次出现,读取“数据”第一次出现的序号;空值不参与运算。

01

我们可以写一段VBA代码来解决这个问题。

有兴趣的朋友可以亲自动手试一试!

完成之后的效果是这个样子的。

02

对VBA不熟悉的朋友们也可以用公式来完成。

在单元格F2中输入公式“=IF(C2="","",IF(COUNTIF($C$2:C2,C2)>1,INDIRECT(TEXT(MIN(IF($C$2:$C$20=C2,ROW($2:$20)*100+COLUMN(D:D))),"R0C00"),0),SUM(IFERROR(1/COUNTIF($C$2:C2,$C$2:C2),0))))”,三键回车并向下拖曳即可。

思路:

  • 当动态的数据区域$C$2:C2中没有重复值时,则执行SUM(IFERROR(1/COUNTIF($C$2:C2,$C$2:C2),0))这段公式。这本身就是求不重复数据个数的一个经典应用。详细的介绍请参看帖子总结篇--COUNTIF函数实用终极帖

  • 当有重复值时,则执行INDIRECT(TEXT(MIN(IF($C$2:$C$20=C2,ROW($2:$20)*100+COLUMN(D:D))),"R0C00"),0)这段公式。这就是多维引用的经典应用,我们以前的帖子中有过多次的介绍了。

  • 最后,利用IF函数做一个空值的判断

03

EXCEL函数和VBA都有着很重要的实际应用。它们没有好坏优劣之分,这个例子重复说明了,解决一个问题会有多种多样的方法,请选择最适合你的那一种

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

我就知道你“在看”

注意!前方有红包挡道!速点阅读原文消灭之!

推荐阅读
(0)

相关推荐