Excel精英培训网

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

[已解决]提取出现最多和最少数字的公式

[复制链接]
发表于 2015-2-8 13:46 | 显示全部楼层 |阅读模式
本帖最后由 雨夜1987 于 2015-2-9 21:17 编辑

如图所示
最佳答案
2015-2-8 22:41
出现次数最多的数字:
=LEFT(9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),1),100)&9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),2),100)&9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),3),100),SUM(N(MAX(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))=LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))))
数组公式。
出现次数最少的数字:
=LEFT(MOD(SMALL(TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99")*100+ROW($1:$10)-1,1),100)&MOD(SMALL(TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99")*100+ROW($1:$10)-1,2),100)&MOD(SMALL(TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99")*100+ROW($1:$10)-1,3),100),SUM(N(MIN(--TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99"))=LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))))
数组公式。
QQ截图20150208134311.png

新建 Microsoft Excel 工作表.zip

2.17 KB, 下载次数: 25

发表于 2015-2-8 16:50 | 显示全部楼层
本帖最后由 李建军 于 2015-2-9 11:00 编辑

看不见我~~

新建 Microsoft Excel 工作表.zip

4.88 KB, 下载次数: 7

回复

使用道具 举报

发表于 2015-2-8 17:00 | 显示全部楼层
本帖最后由 李建军 于 2015-2-8 17:06 编辑

看不见我!!!
回复

使用道具 举报

发表于 2015-2-8 17:05 | 显示全部楼层
{:14:}能删吗 我都做错了{:01:}
回复

使用道具 举报

发表于 2015-2-8 19:28 | 显示全部楼层
本帖最后由 雪舞子 于 2015-2-8 19:31 编辑

做了一个字符串统计自定义函数,
ZFCTJ(n,range)
n取值0~3:0次数最多字符,1次数最少字符,2字符最多次数,3字符最少次数
range 单元格

zd.jpg


代码:
  1. Function ZFCTJ(n%, rang As Range)
  2. '---------------------------------------------------------------------
  3. '字符串统计自定义函数
  4. 'n取值范围 0~3:0次数最多字符,1次数最少字符,2字符最多次数,3字符最少次数
  5. 'rang 单元格
  6. '-------------------------------------编写:雪舞子---------------------
  7.     Dim d As Object, ar(1), br(3), i%
  8.     Set d = CreateObject("scripting.dictionary")
  9.     For i = 1 To Len(rang)
  10.         d(Mid(rang, i, 1)) = d(Mid(rang, i, 1)) + 1
  11.     Next
  12.    
  13.     ar(0) = d.Items: ar(1) = d.keys
  14.     br(2) = ar(0)(0): br(3) = ar(0)(0)
  15.     For i = 0 To d.Count - 1
  16.         If br(2) < ar(0)(i) Then br(2) = ar(0)(i) 'br(2)最大次数
  17.         If br(3) > ar(0)(i) Then br(3) = ar(0)(i) 'br(3)最小次数
  18.     Next
  19.         
  20.     For i = 0 To d.Count - 1
  21.         If br(2) = ar(0)(i) Then br(0) = br(0) & ar(1)(i) 'br(0)最多次数数字
  22.         If br(3) = ar(0)(i) Then br(1) = br(1) & ar(1)(i) 'br(1)最少次数数字
  23.     Next
  24.     ZFCTJ = br(n)
  25. End Function
复制代码

新建 Microsoft Excel 工作表.rar

13.26 KB, 下载次数: 1

回复

使用道具 举报

发表于 2015-2-8 22:16 | 显示全部楼层
关注。
回复

使用道具 举报

发表于 2015-2-8 22:41 | 显示全部楼层    本楼为最佳答案   
出现次数最多的数字:
=LEFT(9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),1),100)&9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),2),100)&9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),3),100),SUM(N(MAX(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))=LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))))
数组公式。
出现次数最少的数字:
=LEFT(MOD(SMALL(TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99")*100+ROW($1:$10)-1,1),100)&MOD(SMALL(TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99")*100+ROW($1:$10)-1,2),100)&MOD(SMALL(TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99")*100+ROW($1:$10)-1,3),100),SUM(N(MIN(--TEXT(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)),"0;;!99"))=LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))))
数组公式。
回复

使用道具 举报

 楼主| 发表于 2015-2-9 12:43 | 显示全部楼层
qinqh_yl 发表于 2015-2-8 22:41
出现次数最多的数字:
=LEFT(9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$ ...

谢谢,公式很好用!高手!如果是数字相同按一个来计算,出现次数由多到少的顺序来排序呢?的公式怎么弄呢?比如A2=012381001001132231212在D2中如何做出10238的排序呢?
回复

使用道具 举报

 楼主| 发表于 2015-2-9 12:44 | 显示全部楼层
雪舞子 发表于 2015-2-8 19:28
做了一个字符串统计自定义函数,
ZFCTJ(n,range)
n取值0~3:0次数最多字符,1次数最少字符,2字符最多次数,3字 ...

虽然我不懂代码,但我还是觉得你这个很厉害的!谢谢了哈!
回复

使用道具 举报

发表于 2015-2-9 14:59 | 显示全部楼层
本帖最后由 qinqh_yl 于 2015-2-9 15:03 编辑
雨夜1987 发表于 2015-2-9 12:43
谢谢,公式很好用!高手!如果是数字相同按一个来计算,出现次数由多到少的顺序来排序呢?的公式怎么弄呢 ...


将数字从多到少排序:
=LEFT(RIGHT(0&SUM((9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),COLUMN(A:J)),100))*10^(10-COLUMN(A:J))),10),SUM(N(ISNUMBER(FIND(ROW($1:$10)-1,A2)))))
数组公式。

同样,7楼第一个公式,求出现次数最多的数字公式也可简化一下:
=LEFT(RIGHT(0&SUM((9-MOD(LARGE((LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))*100+10-ROW($1:$10),COLUMN(A:J)),100))*10^(10-COLUMN(A:J))),10),SUM(N(MAX(LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))=LEN(A2)-LEN(SUBSTITUTE(A2,ROW($1:$10)-1,)))))
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 04:20 , Processed in 0.275740 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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