ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: wcymiss

[Excel 函数与公式] [第82期]数字的个位数在一行内出现频率最高的数字的总和(已总结评分)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-9-18 17:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 hjj0451 于 2011-10-6 17:10 编辑

20110913:思路找到了。但内存数组还没想好,因此暂时用了辅助列得到结果。争取在开结果之前想出来。


20110922:今天把所需要的求和数据提取了出来,但公式是多单元格数组公式,不是内存数组,用SUM直接求和不是正确的结果,只能输出到多单元格再SUM。


通过这个题目,我对MMULT构建内存数组有了更一步的认识,无耐功力浅薄,离胜利还差一步。
再试试这个,结果正确:
  1. =SUM((LOOKUP(ROW(1:9)*9-9+COLUMN(A:I),ROW(1:81),MMULT(--(INT(COLUMN(I:CK)/9)&RIGHT(N(OFFSET(A1,COLUMN(I:CK)/9-1,MOD(COLUMN(I:CK),9))))=INT(ROW(9:89)/9)&RIGHT(N(OFFSET(A1,ROW(9:89)/9-1,MOD(ROW(9:89),9))))),ROW(1:81)^0))={3;3;2;2;2;3;2;9;1})*A1:I9)
复制代码

但有常量数组,需要改进,头晕了。改进后通用,成功,但有点长:
  1. =SUM((LOOKUP(ROW(1:9)*9-9+COLUMN(A:I),ROW(1:81),MMULT(--(INT(COLUMN(I:CK)/9)&RIGHT(N(OFFSET(A1,COLUMN(I:CK)/9-1,MOD(COLUMN(I:CK),9))))=INT(ROW(9:89)/9)&RIGHT(N(OFFSET(A1,ROW(9:89)/9-1,MOD(ROW(9:89),9))))),ROW(1:81)^0))=LARGE((10-INT(ROW(9:89)/9))*10+MMULT(--(INT(COLUMN(I:CK)/9)&RIGHT(N(OFFSET(A1,COLUMN(I:CK)/9-1,MOD(COLUMN(I:CK),9))))=INT(ROW(9:89)/9)&RIGHT(N(OFFSET(A1,ROW(9:89)/9-1,MOD(ROW(9:89),9))))),ROW(1:81)^0),ROW(1:9)*9-8)-100+ROW(1:9)*10)*A1:I9)
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-19 15:21 | 显示全部楼层
本帖最后由 angellbxsc 于 2011-9-21 13:00 编辑

=SUM((10-LEN(SUBSTITUTE(MID(MMULT(MOD(A1:I9,10),10^-ROW(1:9))&REPT(0,9),3,9),RIGHT(A1:I9),)&0)=MOD(SMALL(LEFT(ROW(10:99))*10+FREQUENCY(ROW(1:9)*10+RIGHT(A1:I9),ROW(10:98)),10*ROW(1:9)),10))*A1:I9)

共196字符

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-19 18:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 sharprain 于 2011-9-21 17:40 编辑
  1. =SUM((MOD(SMALL(FREQUENCY(RIGHT(A1:I9)+ROW(1:9)%,RIGHT(A1:I9)+ROW(1:9)%)+INT((ROW(1:82)-1)/9)/1%,ROW(1:9)*9),10)=9-LEN(SUBSTITUTE(TEXT(MMULT(MOD(A1:I9,10),10^(ROW(1:9)-1)),REPT(0,9)),RIGHT(A1:I9),)))*A1:I9)
复制代码
先写一个,有时间再简化,呵呵。数组公式,205个字符
简化一下

  1. =SUM((MOD(SMALL(FREQUENCY(RIGHT(A1:I9)+ROW(1:9)*10,ROW(10:99))+FLOOR(ROW(10:100),10),ROW(1:9)*10),10)=9-LEN(SUBSTITUTE(TEXT(MMULT(MOD(A1:I9,10),10^(ROW(1:9)-1)),REPT(0,9)),RIGHT(A1:I9),)))*A1:I9)
复制代码

194个字了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-21 12:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wjh619993018 于 2011-9-23 12:34 编辑
  1. =SUM((9-LEN(SUBSTITUTE(RIGHT(0&MMULT(MOD(A1:I9,10),10^(9-ROW(1:9))),9),RIGHT(A1:I9),))=MOD(LARGE(FREQUENCY(RIGHT(A1:I9)+ROW(1:9)*10,ROW(10:98))+INT((ROW(1:90)-1)/10)*10,91-ROW(1:9)*10),10))*A1:I9)
复制代码

提高通用性
=SUM((9-LEN(SUBSTITUTE(RIGHT("00000000"&MMULT(MOD(A1:I9,10),10^(9-ROW(1:9))),9),RIGHT(A1:I9),))=MOD(LARGE(FREQUENCY(RIGHT(A1:I9)+ROW(1:9)*10,ROW(10:98))+INT((ROW(1:90)-1)/10)*10,91-ROW(1:9)*10),10))*A1:I9)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-21 21:54 | 显示全部楼层
数组公式,1283个字符,2007测试通过~~
  1. =SUM(IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A1:I1)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A1:I1)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A1:I1),A1:I1),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A2:I2)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A2:I2)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A2:I2),A2:I2),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A3:I3)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A3:I3)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A3:I3),A3:I3),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A4:I4)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A4:I4)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A4:I4),A4:I4),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A5:I5)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A5:I5)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A5:I5),A5:I5),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A6:I6)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A6:I6)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A6:I6),A6:I6),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A7:I7)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A7:I7)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A7:I7),A7:I7),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A8:I8)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A8:I8)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A8:I8),A8:I8),IF(IF(MMULT(N(ROW(1:10)-1=--RIGHT(A9:I9)),ROW(1:9)^0)=MAX(MMULT(N(ROW(1:10)-1=--RIGHT(A9:I9)),ROW(1:9)^0)),ROW(1:10)-1)=--RIGHT(A9:I9),A9:I9))
复制代码
对于自己贴出来这么一个式子,少一点勇气也不敢哦~~~有点汗~~

点评

不大赞成这种逐行判断的手法。。  发表于 2011-10-17 14:09
你凶  发表于 2011-10-16 14:31

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-22 14:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
193字符:
=SUM((LEN(SUBSTITUTE(MID(MMULT(-RIGHT(A1:I9),10^-ROW(1:9))&REPT(0,11),4,9),RIGHT(A1:I9),))=9-RIGHT(SMALL((0&MID(MMULT(10^RIGHT(A1:I9),ROW(1:9)^0),COLUMN(A:J),1))%+ROW(1:9),ROW(1:9)*10)))*A1:I9)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-23 10:27 | 显示全部楼层
本帖最后由 alwstr 于 2011-9-25 21:17 编辑


=SUM((MID(MMULT(10^-RIGHT(A1:I9),ROW(1:9)^0)%,RIGHT(A1:I9)+4,1)=RIGHT(SMALL(ROW(1:9)*10+(0&MID(MMULT(10^RIGHT(A1:I9),ROW(1:9)^0),COLUMN(A:J),1)),ROW(1:9)*10)))*A1:I9)

原来的有点小问题,修改下

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-23 12:25 | 显示全部楼层
245字符
=SUM((MOD(SMALL(LEN(SUBSTITUTE(RIGHT(10^9+MMULT(RIGHT(A1:I9)*10^(COLUMN(A:I)-1),ROW(1:9)^0),9),COLUMN(A:J)-1,))+ROW(1:9)*10,ROW(1:9)*10-9),10)=LEN(SUBSTITUTE(RIGHT(10^9+MMULT(RIGHT(A1:I9)*10^(COLUMN(A:I)-1),ROW(1:9)^0),9),RIGHT(A1:I9),)))*A1:I9)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-25 16:08 | 显示全部楼层
本帖最后由 chrisfang 于 2011-9-26 12:32 编辑

很久没有做题了,技艺也生疏了。在微博上看到这道题,所以也来参与一下:

可能有些人会得到这个公式:=SUM((LEN(SUBSTITUTE(MMULT(MOD(A1:I9,10),10^ROW(2:10))%,RIGHT(A1:I9),))=MOD(SMALL(LEN(SUBSTITUTE(MMULT(MOD(A1:I9,10),10^ROW(2:10))%,RIGHT(A1:I9),))+10^ROW(1:9),ROW(1:9)*9-8),10))*A1:I9)
从这个题目所给的数据来看,这个公式的结果没问题,但是并不严谨,没有对个位是0的情况进行足够的容错处理。

所以更严谨的公式是这个:=SUM((LEN(SUBSTITUTE(MID(10^10+MMULT(MOD(A1:I9,10),10^ROW(1:9)),2,9),RIGHT(A1:I9),))=MOD(LARGE(LEN(SUBSTITUTE(MID(10^10+MMULT(MOD(A1:I9,10),10^ROW(1:9)),2,9),RIGHT(A1:I9),))-10*ROW(1:9),ROW(1:9)*9),10))*A1:I9)
209个字符。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-9-28 09:36 | 显示全部楼层
=SUM(ISNUMBER(MATCH(MOD(A1:I9,10)+ROW(1:9)*10,(MATCH(CEILING(ROW(1:90),10)+FREQUENCY(MOD(A1:I9,10)+ROW(1:9)*10,ROW(10:98)),SMALL(ROW(1:9)*10+MID(MMULT(10^-MOD(A1:I9,10)/10,ROW(1:9)^0)&REPT(0,9),COLUMN(C:L),1),ROW(1:9)*10),)>0)*ROW(10:99),))*A1:I9)
为了给吴姐捧场,我总共想了三四天的时间,完了之后,为了上传,我跑了两次网吧。。。第一次忘了带数据线了,好悲剧。。。来回就花了我半个小时的时间啊。。。
看在我这么忠心的份上,吴姐,你就给我两分吧{:soso_e106:}

点评

这么多人送了,我都不好意思出手了  发表于 2011-10-17 13:37

评分

6

查看全部评分

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 11:03 , Processed in 0.049148 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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