ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7582|回复: 23

[Excel 函数与公式] [第91期]计算所有业务员的几何平均值之和(已总结)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-10-12 16:39 | 显示全部楼层 |阅读模式
本帖最后由 Zaezhong 于 2012-11-11 20:36 编辑

要求计算每一个业务员的几何平均,最后将所有的结果加总,具体说明见附件


答案正确者,奖励:
1、公式长度含等号小于等于300字,奖励技术分2分;
2、公式长度含等号小于等于400字,奖励技术分1分。
视完成情况,奖励财富若干。

总结楼层:http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=930654&pid=6462656

本帖子中包含更多资源

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

x

评分

7

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-16 12:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 hjj0451 于 2012-10-31 13:49 编辑

好题目,先占个楼:
法一,MMULT法取第[3,N-2]个值,327:
  1. =ROUND(SUM(EXP(MMULT(LN(TRANSPOSE(B2:B45)^((MMULT(COLUMN(A:AR)^0,(A2:A45=TRANSPOSE(A2:A45))*(B2:B45+ROW(1:44)%<TRANSPOSE(B2:B45+ROW(1:44)%)))>1)*(MMULT(COLUMN(A:AR)^0,(A2:A45=TRANSPOSE(A2:A45))*(B2:B45+ROW(1:44)%>TRANSPOSE(B2:B45+ROW(1:44)%)))>1)*(A2:A45=TRANSPOSE(A2:A45)))),1/(COUNTIF(A:A,A2:A45)-4)))/COUNTIF(A:A,A2:A45)),2)
复制代码
法二,SMALL法取第[3,N-2]个值,279:
  1. =ROUND(SUM(10^MMULT(TRANSPOSE(LOG(B2:B45/COUNTIF(A:A,A2:A45))*MMULT(-(B2:B45+ROW(1:44)%-MID(SMALL(COLUMN(J:BA)/1%+(B2:B45+ROW(1:44)%)*(A2:A45=TRANSPOSE(A2:A45)),ROW(1:44)*44-(COUNTIF(A:A,A2:A45)-3)^{0,1}),3,5)<0),{-1;1})*(A2:A45=TRANSPOSE(A2:A45))),1/(COUNTIF(A:A,A2:A45)-4))),2)
复制代码
   继续想办法简化,210:
  1. =FIXED(SUM(10^MMULT(MOD(SMALL((A2:A45<>TRANSPOSE(A2:A45))+LOG(B2:B45)+COLUMN(J:BA)/1%,ROW(1:44)*44+COLUMN(A:AP)-42),10)*(COLUMN(D:AS)<COUNTIF(A:A,A2:A45))/(COUNTIF(A:A,A2:A45)-4),1^B2:B43)/COUNTIF(A:A,A2:A45)))
复制代码

点评

又学到一个FIXED函数,谢谢。  发表于 2012-11-11 11:36

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-16 14:13 | 显示全部楼层
本帖最后由 wangg913 于 2012-11-11 10:37 编辑

附件就不上了,数组公式:
  1. =--RMB(SUM(10^MMULT(LOG(MOD(SMALL(TRANSPOSE(B2:B45)*(A2:A45=TRANSPOSE(A2:A45))+ROW(1:44)/1%,ROW(1:44)*44-COLUMN(B:AO))^(COLUMN(D:AQ)<COUNTIF(A:A,A2:A45)),100))/(COUNTIF(A:A,A2:A45)-4),B2:B41^0)*(MATCH(A2:A45,A:A,)=ROW(2:45))))
复制代码
※※※※※※※※※※※※※※※※※※※※※※※※※
2012-11-7 18:40  简化一下:
  1. =--RMB(SUM(10^MMULT(LOG(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AO)),100))*(COLUMN(D:AQ)<COUNTIF(A:A,A2:A45))/(COUNTIF(A:A,A2:A45)-4),B2:B41^0)/COUNTIF(A:A,A2:A45)))
复制代码
帮助文件中 RMB()函数 的参数decimals[省略后]默认为2,可2010版默认为0,即--RMB(X)=ROUND(X,0),出乎意料。
因此,如果是2010版,上式中的--RMB(SUM())应换成ROUND(SUM(),2)
※※※※※※※※※※※※※※※※※※※※※※※※※
2012-11-11 10:40




本帖子中包含更多资源

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

x

点评

RMB太强大了。  发表于 2012-11-11 11:37
我03默认0。不过用ROUND也无法在整数结果时保留2位小数。  发表于 2012-11-11 11:27
是不是版本问题,我使用2010默认是保留两位的  发表于 2012-11-11 10:27

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-16 14:18 | 显示全部楼层
2、为了计算方便B列的数据统一为[10,99],具体需要排除的数据已经使用颜色标出
这一点是不是说,有颜色的将不在考虑进去计算?
4、如王顺最大两个为99和98,最小两个为37和42,那么王顺的销量几何平均为(50*84*68*90)^(1/4),其余类似,最后全部相加
全部相加是什么意思?用得到的平均值再加上两个最大值与两个最小值?

TA的精华主题

TA的得分主题

发表于 2012-10-16 15:01 | 显示全部楼层
本帖最后由 delete_007 于 2012-11-11 11:21 编辑
  1. =ROUND(SUM(10^((MMULT(LOG(TRANSPOSE(B2:B45)^(A2:A45=TRANSPOSE(A2:A45))),ROW(1:44)^0)-MMULT(4+LOG(MOD(SMALL(B2:B45%^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR),ROW(1:44)*44-{43,42}),1)*MOD(LARGE(IF(A2:A45=TRANSPOSE(A2:A45),B2:B45)%+45-COLUMN(A:AR),ROW(1:44)*44-{42,43}),1)),{1;1}))/(COUNTIF(A:A,A2:A45)-4))*(MATCH(A2:A45,A:A,)=ROW(2:45))),2)
复制代码
最原始的思路,336字符,继续努力突破300.
  1. =ROUND(SUM(10^(MMULT(LOG(MOD(SMALL(IF(A2:A45=TRANSPOSE(A2:A45),B2:B45*101,5501)+COLUMN(A:AR)/1%%,ROW(1:44)*44-COLUMN(B:AO)),100)),ROW(1:40)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)),2)
复制代码
取巧进行到底,191字符。该公式成立的条件是:需要去掉的两个最小值<=55<=需要去掉的两个最大值。
  1. =ROUND(SUM(10^(MMULT(LOG(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100))*(COLUMN(D:AS)<COUNTIF(A:A,A2:A45)),ROW(1:42)^0)/(COUNTIF(A:A,A2:A45)-4))*(MATCH(A2:A45,A:A,)=ROW(2:45))),2)
复制代码
不取巧的通用公式,225字符。
把去重改成计数的方式,公式减少到214字符。
  1. =ROUND(SUM(10^(MMULT(LOG(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100))*(COLUMN(D:AS)<COUNTIF(A:A,A2:A45)),ROW(1:42)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)),2)
复制代码
LOG换成LN再减少一个字符,ROW(1:42)^0换成1^B2:B43,210字符。
  1. =ROUND(SUM(EXP(MMULT(MOD(SMALL(LN(B2:B45)^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100)*(COLUMN(D:AS)<COUNTIF(A:A,A2:A45)),1^B2:B43)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)),2)
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-16 16:30 | 显示全部楼层
本帖最后由 悟空师弟 于 2012-10-16 16:59 编辑

长长的公式吓吓的人,245字符,不过,计算结果与楼主给出314.94不一样,下面公式的结果是321.6:
  1. =SUM(MMULT(MOD(-SMALL(ROW(1:44)/1%-TEXT(MOD(SMALL(B2:B45*(TRANSPOSE(A2:A45)=A2:A45)+COLUMN(A:AR)/1%,ROW(1:44)*44-44+COLUMN(A:AP)),100),"0;;100"),ROW(1:44)*42-42+COLUMN(A:AN)),100),ROW(1:40)^0)/(COUNTIF(A2:A45,A2:A45)^2-COUNTIF(A2:A45,A2:A45)*4))
复制代码


简化一下,218字符:
  1. =SUM(MOD(-SMALL(ROW(1:44)/1%-TEXT(MOD(SMALL(B2:B45*(TRANSPOSE(A2:A45)=A2:A45)+COLUMN(A:AR)/1%,ROW(1:44)*44-44+COLUMN(A:AP)),100),"0;;100"),ROW(1:44)*42-42+COLUMN(A:AN)),100)/(COUNTIF(A:A,A2:A45)-4)/COUNTIF(A:A,A2:A45))
复制代码

TA的精华主题

TA的得分主题

发表于 2012-10-17 00:23 | 显示全部楼层
本帖最后由 CheryBTL 于 2012-10-28 12:50 编辑

先来一个,再减化,221字符:
  1. =ROUND(SUM(10^(MMULT(LOG(MOD(IF(COLUMN(E:AV)>COUNTIF(A:A,A2:A45),1,SMALL((A2:A45=TRANSPOSE(A2:A45))*B2:B45+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AS))),100),10),ROW(1:44)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)),2)
复制代码
将LOG换用LOG10再省一个,220字符:
  1. =ROUND(SUM(10^(MMULT(LOG10(MOD(IF(COLUMN(E:AV)>COUNTIF(A:A,A2:A45),1,SMALL((A2:A45=TRANSPOSE(A2:A45))*B2:B45+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AS))),100)),ROW(1:44)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)),2)
复制代码
换INT再减一字符,219:
  1. =INT(SUM(10^(2+MMULT(LOG10(MOD(IF(COLUMN(E:AV)>COUNTIF(A:A,A2:A45),1,SMALL((A2:A45=TRANSPOSE(A2:A45))*B2:B45+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AS))),100)),ROW(1:44)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)))%
复制代码
去掉IF再省2字符,215:
  1. =INT(SUM(10^(2+MMULT(LOG10(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100)^(COLUMN(D:AS)<COUNTIF(A:A,A2:A45))),ROW(1:42)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45)))%
复制代码
再省一个字符:
  1. =ROUND(SUM(10^MMULT(LOG10(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100)^(COLUMN(D:AS)<COUNTIF(A:A,A2:A45)))/(COUNTIF(A:A,A2:A45)-4),ROW(1:42)^0)/COUNTIF(A:A,A2:A45)),2)
复制代码
————————————————————————————————————————
换回INT再省2字符(212):
  1. =INT(SUM(10^MMULT(LOG10(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100)^(COLUMN(D:AS)<COUNTIF(A:A,A2:A45)))/(COUNTIF(A:A,A2:A45)-4),ROW(1:42)^0)/COUNTIF(A:A,A2:A45)%))%
复制代码
————————————————————————————
这个题应该也可以要求人名出现次数小于或等于5次,
只是需要假定当等于5次时,几何平均值中间值,小于5次时取0,
下面公式对人名出现次数没有限制,用TEXT防错,251字符:
  1. =INT(SUM(10^(2+MMULT(LOG10(MOD(SMALL(B2:B45^(A2:A45=TRANSPOSE(A2:A45))+COLUMN(A:AR)/1%,ROW(1:44)*44-COLUMN(B:AQ)),100)^(COLUMN(D:AS)<COUNTIF(A:A,A2:A45))),ROW(1:42)^0)/TEXT(COUNTIF(A:A,A2:A45)-4,"0;1;1"))/COUNTIF(A:A,A2:A45)*(COUNTIF(A:A,A2:A45)>4)))%
复制代码
如果上式中的ROW(1:42)^0可以改用C1:C42+1可再省3字符。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-17 10:44 | 显示全部楼层
本帖最后由 xgg2001 于 2012-10-17 11:24 编辑

222,不知道是否符合题意{:soso_e110:}
  1. =SUM(10^(MMULT(LOG(IF(COUNTIF(A:A,A2:A45)>46-COLUMN(A:AP),MOD(SMALL(ROW(1:44)+(A2:A45=TRANSPOSE(A2:A45))*TRANSPOSE(B2:B45)%,ROW(1:44)*44+COLUMN(A:AP)-44),1)/1%,1)),ROW(1:42)^0)/(COUNTIF(A:A,A2:A45)-4))/COUNTIF(A:A,A2:A45))
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-18 14:54 | 显示全部楼层
本帖最后由 ff8feng 于 2012-10-18 15:26 编辑

{:soso_e141:}
先来个含等号265的,有空的话再考虑精简,最近比较忙。。。
=ROUND(SUM(10^MMULT(LOG10(RIGHT(IF((COLUMN(A:AR)<43)*(COLUMN(A:AR)>46-COUNTIF(A2:A45,A2:A45)),SMALL((A2:A45=TRANSPOSE(A2:A45))*TRANSPOSE(B2:B45)+ROW(1:44)/1%,COLUMN(A:AR)+ROW(1:44)*44-44),1),2)),ROW(1:44)^0)^(1/(COUNTIF(A2:A45,A2:A45)-4))/COUNTIF(A2:A45,A2:A45)),2)

感觉此题的关键就是如何建立二维数组来获取每个人的有效数据,一旦取数成功此题也就豁然开朗了,为了方便评阅,传个附件模拟一下取数核心。。。

本帖子中包含更多资源

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

x

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-10-19 10:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 绿玉人 于 2012-11-8 18:46 编辑
  1. =ROUND(SUM((MATCH(A2:A45,A:A,)=ROW(2:45))*10^(MMULT(TRANSPOSE(LOG(B2:B45^(A2:A45=TRANSPOSE(A2:A45)))),B2:B45^0)-MMULT(LOG(MOD(SMALL(COLUMN(B:AS)/1%+(A2:A45=TRANSPOSE(A2:A45))*B2:B45,ROW(1:44)*44-COUNTIF(A:A,A2:A45)*{1,1,0,0}+{1,2,-1,0}),100)),B2:B5^0))^(1/(COUNTIF(A:A,A2:A45)-4))),2)
复制代码

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-21 18:50 , Processed in 0.052661 second(s), 20 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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