Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3374|回复: 20

[已解决]单元格内有多个数值 如何统计区域内出现次数最多

[复制链接]
发表于 2021-11-12 21:28 | 显示全部楼层 |阅读模式
A1单元格内有数值 0,1,2,3,15
A2单元格有数值 1,2,9
A3单元格内有数值 8,11
恳请指教,如何统计A1:A3区域内出现次数最多的数值 1,2

最佳答案
2021-11-12 23:29
自定义函数

Function mult(rng)
   Set d = CreateObject("Scripting.Dictionary")
   For Each r In rng
      For Each v In Split(r, ",")
         d(v) = d(v) + 1
      Next
   Next
   Max = Application.Max(d.items())
   For Each Key In d.keys()
      If d(Key) < Max Then d.Remove Key
   Next
   mult = Join(d.keys(), ",")
End Function

发表于 2021-11-12 21:42 | 显示全部楼层
=MODE.MULT(IFERROR(--TRIM(MID(SUBSTITUTE(A1:A3,",",REPT(" ",99)),COLUMN(A:Z)*99-98,99)),""))
回复

使用道具 举报

发表于 2021-11-12 21:50 | 显示全部楼层
=TEXTJOIN(",",,MODE.MULT(IF(1-ISERR(FIND(","&COLUMN(A:ZZ)-1&",",","&A1:A3&",")),COLUMN(A:ZZ)-1)))
log.png
回复

使用道具 举报

 楼主| 发表于 2021-11-12 21:52 | 显示全部楼层
本帖最后由 lijian8003 于 2021-11-12 22:16 编辑
小|树 发表于 2021-11-12 21:42
=MODE.MULT(IFERROR(--TRIM(MID(SUBSTITUTE(A1:A3,",",REPT(" ",99)),COLUMN(A:Z)*99-98,99)),""))

谢谢!

回复

使用道具 举报

 楼主| 发表于 2021-11-12 21:57 | 显示全部楼层
cutecpu 发表于 2021-11-12 21:50
=TEXTJOIN(",",,MODE.MULT(IF(1-ISERR(FIND(","&COLUMN(A:ZZ)-1&",",","&A1:A3&",")),COLUMN(A:ZZ)-1)))

谢谢!但出现了#NAME?  为何?

回复

使用道具 举报

发表于 2021-11-12 22:02 | 显示全部楼层
lijian8003 发表于 2021-11-12 21:57
谢谢!但出现了#NAME?  为何?

可能版本不支援 TEXTJOIN,改用区域数组公式

demo.rar

6.29 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2021-11-12 22:58 | 显示全部楼层
cutecpu 发表于 2021-11-12 22:02
可能版本不支援 TEXTJOIN,改用区域数组公式

加入数据后函数出错,问题在哪,恳请指教

出错:统计区域内出现次数最多.zip

13.09 KB, 下载次数: 2

回复

使用道具 举报

发表于 2021-11-12 23:11 | 显示全部楼层
EXCEL 2010 以上支援 MODE.MULT

若不支援時,只好用自定函數處理
Function xMODE(R)
    Dim a(1 To 10000)
    For Each xR In R
        For Each c In Split(xR, ",")
            n = n + 1: a(n) = Val(c)
        Next
    Next
    b = Application.Frequency(a, a)
    max_b = Application.Max(b)
    For i = 1 To UBound(b)
        If b(i, 1) = max_b Then xM = xM & "," & a(i)
    Next
    xMODE = Mid(xM, 2)
End Function

未命名.png
回复

使用道具 举报

发表于 2021-11-12 23:12 | 显示全部楼层
lijian8003 发表于 2021-11-12 22:58
加入数据后函数出错,问题在哪,恳请指教


demo2.rar

13.6 KB, 下载次数: 2

回复

使用道具 举报

发表于 2021-11-12 23:29 | 显示全部楼层    本楼为最佳答案   
自定义函数

Function mult(rng)
   Set d = CreateObject("Scripting.Dictionary")
   For Each r In rng
      For Each v In Split(r, ",")
         d(v) = d(v) + 1
      Next
   Next
   Max = Application.Max(d.items())
   For Each Key In d.keys()
      If d(Key) < Max Then d.Remove Key
   Next
   mult = Join(d.keys(), ",")
End Function

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 20:55 , Processed in 0.451681 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表