ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 小小竞赛题,供高手玩手

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-21 09:28 | 显示全部楼层 |阅读模式
本题来源于本论坛一网友求助,本人觉得很有必要推荐给大家。活跃论坛气氛。难度不是很高,却很有内涵。

本人无权授予技术分,但有权授予花花,根据答题情况,授予不同数值的花。

小竞赛.rar

2.44 KB, 下载次数: 257

评分

6

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-21 09:41 | 显示全部楼层
问一下,1月份的15.52%怎么来的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-21 09:56 | 显示全部楼层
本帖最后由 swyrlbq 于 2015-10-21 14:32 编辑
ykqrs 发表于 2015-10-21 09:41
问一下,1月份的15.52%怎么来的?

1月份,第一行有15天,第二行有16天,对应的毛利是15%和16%,
=(15*15%+16*16%)/31

稍后帖上本人公式,字符176,可参考
  1. =SUM(MMULT(1-ISNA(MATCH(IF($C2:$C13-$B2:$B13+1>=COLUMN($A:$CV),$B2:$B13+COLUMN($A:$CV)-1,),TEXT(A18,"y-m-!1")+ROW(INDIRECT("1:"&DAY(A18)))-1,)),ROW(1:100)^0)*$D2:$D13)/DAY(A18)
复制代码

花花后面陆续送上。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-21 10:12 | 显示全部楼层
本帖最后由 cmxxccxx 于 2015-10-21 13:15 编辑

先开个火车,有空再去优化{:soso_e113:}
  1. =SUM(MMULT(TRANSPOSE(ROW(INDIRECT(1&":"&DAY(B18)))^0),(ROW(INDIRECT(TEXT(B18,"e-m-!1")*1&":"&B18))>=TRANSPOSE($B2:$B13))*(ROW(INDIRECT(TEXT(B18,"e-m-!1")*1&":"&B18))<=TRANSPOSE($C2:$C13)))*TRANSPOSE($D2:$D13))/DAY(B18)
复制代码

数组右拉
优化下
  1. =SUM(($B2:$B13<=B18-COLUMN(INDIRECT("rc1:rc"&DAY(B18),))+1)*($C2:$C13>=B18-COLUMN(INDIRECT("rc1:rc"&DAY(B18),))+1)*$D2:$D13/DAY(B18))
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-21 10:34 | 显示全部楼层
本帖最后由 象山海鲜 于 2015-10-21 10:48 编辑
  1. =SUM(FREQUENCY(ROW(INDIRECT(B18-DAY(B18)+1&":"&B18)),$B$2:$C$13-{1,0})*MOD(ROW(2:26),2)*N(OFFSET($D1,ROW(2:26)/2,)))/DAY(B18)
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-21 10:34 | 显示全部楼层
cmxxccxx 发表于 2015-10-21 10:12
先开个火车,有空再去优化

数组右拉

正确答案,好好学习一下。

TA的精华主题

TA的得分主题

发表于 2015-10-21 10:57 | 显示全部楼层

你太强大了,哈哈,一个贴子不能重复鲜花了

TA的精华主题

TA的得分主题

发表于 2015-10-21 11:05 | 显示全部楼层
虽然开了个火车,但是求楼主给鲜花,哈哈:
  1. =AVERAGE(LOOKUP(ROW(INDIRECT((EOMONTH(B18,-1)+1)&":"&B18)),SMALL($B$2:$C$13,ROW(INDIRECT("1:"&ROWS($B$2:$C$13)*COLUMNS($B$2:$C$13)))),INDEX($D$2:$D$13,N(IF({1},ROW(INDIRECT("1:"&ROWS($B$2:$C$13)*COLUMNS($B$2:$C$13)))/2+1/2)))))
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-21 11:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
简写成这样可以吗:
  1. =AVERAGE(LOOKUP(ROW(INDIRECT((EOMONTH(B18,-1)+1)&":"&B18)),SMALL($B$2:$C$13,ROW($1:$24)),INDEX($D$2:$D$13,N(IF({1},ROW($1:$24)/2+1/2)))))
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-21 11:12 | 显示全部楼层
=SUM(MMULT(((TEXT(B$18,"e-m")&"-"&ROW(INDIRECT("1:"&DAY(B$18))))-TRANSPOSE($B$2:$B$13)>=0)*((TEXT(B$18,"e-m")&"-"&ROW(INDIRECT("1:"&DAY(B$18))))-TRANSPOSE($C$2:$C$13)<=0),$D$2:$D$13))/DAY(B18)

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-11 05:14 , Processed in 0.047836 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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