又是序号问题!大神写了一段代码,瞬间搞定几小时的工作量!
送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
一个群友问了这样一个排序的问题,如下图。
条件:如果“数据”第一次出现,那么计算“数据”在C列不重复的的排位作为序号;如果“数据”第二至第N次出现,读取“数据”第一次出现的序号;空值不参与运算。
我们可以写一段VBA代码来解决这个问题。
有兴趣的朋友可以亲自动手试一试!
完成之后的效果是这个样子的。
对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函数做一个空值的判断
EXCEL函数和VBA都有着很重要的实际应用。它们没有好坏优劣之分,这个例子重复说明了,解决一个问题会有多种多样的方法,请选择最适合你的那一种
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”
注意!前方有红包挡道!速点阅读原文消灭之!