发布日期:2024-11-04 13:14 点击次数:163
图片
数字 6 和 9 出现次数是相同的,都是5次。由于6是先出现的,所以MODE函数的结果只有6这一个数字。图片
而MODE.MULT函数则会按先后顺序分别列出两个出现次数最多的数字。图片
有时我们希望找出一组文本数据中哪个文本出现次数最多,这两个内置函数就歇菜了。于是我就搞了一个自定义函数,帮大家轻松解决这个问题。函数名称:CS函数参数:图片
1、文本数据所在范围范围可以是多行多列。案例中我们选择了B12:D15区域。2、分隔符如果多个文本出现次数相同,函数也都会罗列出来,并可以自定义分隔符。案例中我们使用竖线作为分隔符,分隔符需要用英文输入法下的双引号引起来。还不知道如何使用这个自定义函数?跟着下面的步骤来肯定能学会。一、导入代码直接复制下面的代码到VBE编辑器中,具体操作参见动图演示:图片
进入VBE编辑器的快捷键:ALT+F11, 如果按下快捷键无效,请按下FN键后再尝试。代码要在模块里才能生效,因此需要先新建模块。代码如下:Function CS(rng As Range, 分隔符 As String)Dim d As Object, arr, brr, crr, str As String, i As Long, j As Long, k As Long, n As LongSet d = CreateObject('scripting.dictionary')arr = rngFor i = 1 To UBound(arr) For j = 1 To UBound(arr, 2) If Not IsEmpty(arr(i, j)) Then If d.exists(arr(i, j)) Then d(arr(i, j)) = d(arr(i, j)) + 1 Else d.Add arr(i, j), 1 End If End If Next jNext ibrr = d.keyscrr = d.itemsFor n = 0 To d.Count - 1 If d(brr(n)) > k Then k = d(brr(n)) str = brr(n) ElseIf d(brr(n)) = k Then str = str & 分隔符 & brr(n) End IfNext nCS = strEnd Function
二、保存需要将工作簿保存为启动宏的工作簿,这样自定义函数代码不会丢失,便于函数后期的再次使用和更改。图片
三、函数测试做完前两个步骤,就能像使用内置函数一样使用这个自定义函数啦!这里我们以下表为例,对函数进行测试。图片
每个项目有15个评委,每个评委选出自己心目中的最佳人选,现在我们需要统计每个项目得票数最多的人。得票数相同的并列显示,并用竖线分隔。请参见动图演示:图片
公式:=cs(B3:P3,'|')ok, 函数测试没问题,可以放心使用啦!我们在平时工作中,如果某些问题无法用内置函数解决,或者用内置函数解决特别复杂,不妨用VBA代码自己尝试做一个自定义函数,让工作更加简单。Excel学员群的小伙伴可以在群里下载配套练习文件研究学习。希望今天的分享对大家的工作有所帮助,我们下期再见! 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。