专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
Excel之家ExcelHome  ·  字符拆分还不会,年终发奖两行泪 ·  2 天前  
Excel之家ExcelHome  ·  Excel求和用得好,年薪三万还嫌少 ·  2 天前  
完美Excel  ·  改进的Union函数 ·  2 天前  
Excel之家ExcelHome  ·  合并单元格求和、计数、加序号 ·  4 天前  
Excel之家ExcelHome  ·  职务排序很简单,还不会的去搬砖 ·  3 天前  
51好读  ›  专栏  ›  完美Excel

连续排序的自定义函数

完美Excel  · 公众号  · Excel  · 2025-01-14 05:30

正文

学习Excel技术,关注微信公众号:
excelperfect

标签:Excel技巧LAMBDA函数

Excel中,对于重复的数值,没有函数能够返回连续的数字序号,而只是返回重复的排序数字号。

可以使用函数组合让排序的数字序号连续,如下图1所示。

1
在单元格B1中输入公式:

=RANK.EQ(A1,$A$1:$A$17)+COUNTIF($A$1:A1,A1)-1

下拉拖动复制至单元格B17

然而,这里有两个问题:因被排序的值是文本而导致错误值;0与空单元格排序序号相同。

可以对公式加以改进,如下图2所示,在单元格C1中输入公式:

=IF(ISNUMBER(A1),RANK.EQ(A1,$A$1:$A$17)+COUNTIF($A$1:A1,A1)-1,"")

下拉拖动复制至单元格C17

2
这样,上面的两个问题就解决了。

接下来,我们来自定义一个函数。

我们先将上述公式进一步改进,如下图3所示,在单元格D1中的公式:

=IF(ISNUMBER(A1),RANK.EQ(A1,$A$1:$A$17)+COUNTIF(INDEX($A$1:$A$17,1):A1,A1)-1,"")

3
然后,提取公式中可以共同设置的变量,使用LAMBDA来自定义函数。先测试LAMBDA定义的函数,在单元格E1中输入:

=LAMBDA(rng,amt,IF(ISNUMBER(amt),RANK.EQ(amt,rng)+COUNTIF(INDEX(rng,1):amt,amt)-1,""))($A$1:$A$17,A1)

结果如下图4所示。

4
测试通过后,就可以来自定义函数了。

先定义名称,如下图5所示。

5
然后,使用这个自定义函数看看结果是否正确。在单元格F1中输入:

=fnRANK($A$1:$A$17,A1)

结果如下图6所示。

6
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

推荐文章
Excel之家ExcelHome  ·  字符拆分还不会,年终发奖两行泪
2 天前
Excel之家ExcelHome  ·  Excel求和用得好,年薪三万还嫌少
2 天前
完美Excel  ·  改进的Union函数
2 天前
Excel之家ExcelHome  ·  合并单元格求和、计数、加序号
4 天前
Excel之家ExcelHome  ·  职务排序很简单,还不会的去搬砖
3 天前
半导体行业观察  ·  工程师客户们喜欢这样的供应商
8 年前
福建科普  ·  图说科学丨冬日洗澡的正确姿势
8 年前
深夜书屋  ·  爱,就是让对方活出自我
7 年前