首页   

连续排序的自定义函数

完美Excel  · Excel  · 1 周前

正文

学习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社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。

© 2024 精读
删除内容请联系邮箱 2879853325@qq.com