ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] 【65期】按要求制作打印表格 [已结束]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-9-14 09:50 | 显示全部楼层
不能定义名称,而函数超过7层,可让我费了不少劲
=OFFSET($A$1,SMALL(IF($B$2:$B$101=INDEX($C$2:$C$7,SMALL(IF(COLUMN($A:$D)<=ROUNDUP(COUNTIF($B:$B,$C$2:$C$6)/20,0),ROW($C$1:$C$5),6),INT((ROW()-2)/10)+1)),ROW($1:$100),4^4),MOD(ROW(E1)-1,10)+1+INT(COLUMN(A2)/3)*10+SUM(($F$1:$F1=INDEX($C$2:$C$7,SMALL(IF(COLUMN($A:$D)<=ROUNDUP(COUNTIF($B:$B,$C$2:$C$6)/20,0),ROW($C$1:$C$5),6),INT((ROW()-2)/10)+1)))*(MOD(ROW($1:1)-1,10)=0))*20),MOD(COLUMN(B2),2))&""

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-9-14 15:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=OFFSET($B$1,SMALL(IF($B$2:$B$101=LOOKUP(ROW()-2,MMULT(N(ROW($2:$6)>COLUMN($A:$E)),CEILING(COUNTIF($B:$B,$C$1:$C$5),20))/2,$C$2:$C$6),ROW($1:$100),999),ROW(A1)+((COLUMN()>6)+INT((ROW()-2)/10))*10-LOOKUP(ROW()*2-4,MMULT(N(ROW($2:$6)>COLUMN($A:$E)),CEILING(COUNTIF($B:$B,$C$1:$C$5),20)))),MOD(COLUMN(),-2))&""

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-9-16 17:09 | 显示全部楼层

太难了,想了这么多天

=INDIRECT(CHAR(66-MOD(COLUMN(),2))&RIGHT(SMALL(CHOOSE(COLUMN($A$2:$B$101),MATCH(ROW($A$2:$B$101)-2,MMULT(--(ROW($1:$6)>=COLUMN($A:$F)),MOD(-COUNTIF($B$2:$B$101,$C$1:$C$6),20)))*1110,MATCH($B$2:$B$101,$C$2:$C$6,0)*1000+ROW($A$2:$B$101)),COUNTIF(OFFSET(E1,-MOD(ROW()-2,10),0,MOD(ROW()-2,10)+1,1),"<>")+10*(COLUMN()>6)+COUNTIF(OFFSET($F$1,0,0,FLOOR(ROW()-2,10)+1,2),"<>")-2),3))&""

377字符
在哪点使用仅楼主可见呢?

这个周末改了一下,252字符
=OFFSET($B$1,RIGHT(SMALL(IF({0,2},MATCH(ROW($2:$101)-2,MMULT(1-(ROW($1:$6)<COLUMN($A:$F)),MOD(-COUNTIF($B$2:$B$101,$C$1:$C$6),20)))*1110,MATCH($B$2:$B$101,$C$2:$C$6,0)*1000+ROW($1:$100)),ROW()+10*(COLUMN()>6)+FLOOR(ROW()-2,10)-1),3),-MOD(COLUMN(),2))&""
思路非常好,构造2列内存数组,给做题打来了很大的简化,一个小缺憾是无法处理处理一些出现学校,比如B2为庚。但就题目而言没有任何问题

[ 本帖最后由 冻豆腐 于 2010-9-23 21:41 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-9-17 15:09 | 显示全部楼层
E2=INDEX($A:$B,SMALL(IF($B$2:$B$101=INDEX($C$2:$C$6,MATCH(2*(ROW()-1),{0;40;80;100;120}),),ROW($B$2:$B$101),4^8),COUNTIF($E$1:$F1,INDEX($C$2:$C$6,MATCH(2*(ROW()-1),{0;40;80;100;120}),))+1+(COLUMN()>6)*10+INT(COUNTIF($E$1:$F1,INDEX($C$2:$C$6,MATCH(2*(ROW()-1),{0;40;80;100;120}),))/10)*10),2-MOD(COLUMN(),2))&""
数组公式右下拉
===================
公式说明:
常量数组{0;40;80;100;120}由公式MMULT((ROW(1:5)>COLUMN(A:E))*TRANSPOSE(CEILING(COUNTIF(B2:B101,C2:C6),20)),{1;1;1;1;1})
按F9得到。用常量不但可以减短公式,主要还可以节省内存。
去空格方面有问题,如果b2:b33都为甲的话,结果可以看一下,计算错误,无法得分。

------------------------------
题中如果要改动的话,这个数组也是需要变的。{0;40;80;100;120}
答题中说了是由公式MMULT((ROW(1:5)>COLUMN(A:E))*TRANSPOSE(CEILING(COUNTIF(B2:B101,C2:C6),20)),{1;1;1;1;1})生成。
本人觉得公式是对的。与楼主意思不符就没有办法了,对不对没关系,自己能用就行了,呵呵。。。。。。。

我看粗心了,只是公式如果按要求代入的话,会出现字符超标的情况,还是无法得分.

[ 本帖最后由 冻豆腐 于 2010-9-24 11:48 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-20 19:25 | 显示全部楼层
不晓得对了没,冻豆腐老师辛苦。
答案正确,在公式引用方面,利用辅助列的迹象很明显(答案中的I列,只是出题时没有太多讲解的地方,如果全对说不过去,折中一下,技术分给2分。

[ 本帖最后由 冻豆腐 于 2010-9-23 21:29 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-23 08:01 | 显示全部楼层
中秋比较繁忙,要过几天才能结题,见谅。大家可以互相看一下答案,是否有不妥之处。

TA的精华主题

TA的得分主题

发表于 2010-9-23 23:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  这个我要申辩,因为文件中的题目要求写的是“答案区域D至H列”,当时对这句话,我理解的是1、也许是作者写错。2、也许是说可以引用前面一列。何况题目要求并没有说不能引用其他单元格。我觉得这个不能算辅助列,因为并没有在任何辅助列写公式。如果是说不能引用其他单元格,那么row($1:$101)的写法是不是也引用了第一行的其他单元格呢?严肃的看,我觉得意见保留。不过,如果楼主坚持正确,我也表示理解和支持。

刚刚才看见顶楼写了e列到h列,应该是对文件的修正说明。  啊,亏了亏了。下次注意。
谢谢理解,从公式角度看,其他人在处理空格方面会更好点,其他人无法加分,只能你降档次了。解题的趣味在于过程,提高的过程在总结和复习

[ 本帖最后由 冻豆腐 于 2010-9-24 11:54 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-24 08:51 | 显示全部楼层

回复 17楼 moon2778 的帖子

令我关注 打开的第一印象:
多引用了单元格格 工作表因为计算计算 速度很慢慢 让人耐心等等

不使用辅助列,表格中出现的可以使用
这句 可是有内涵的

[ 本帖最后由 泓() 于 2010-9-24 08:58 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-24 11:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 5楼 wangg913 的帖子

===========================================================================================
=OFFSET($A$1,RIGHT(SMALL(IF({1,0},MATCH($B$2:$B$101,$C:$C,),SMALL(7.1-(COLUMN($A:$T)<=MOD(20-MOD(COUNTIF($B:$B,$C$2:$C$6),20),20))*{5;4;3;2;1},ROW($1:$100)))/1%%+ROW($1:$100),ROW()+INT(ROW(A10)/10+INT(COLUMN(B1)/2))*10-21),4),MOD(COLUMN(B1),2))&""
是不是可以用MOD(-COUNTIF($B:$B,$C$2:$C$6),20) 替代啊?

[ 本帖最后由 leeyong 于 2010-9-24 11:16 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-24 11:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 wangg913 于 2010-8-31 09:47 发表
=OFFSET($A$1,RIGHT(SMALL(IF({1,0},MATCH($B$2:$B$101,$C:$C,),SMALL(7.1-(COLUMN($A:$T)<=MOD(20-MOD(COUNTIF($B:$B,$C$2:$C$6),20),20))*{5;4;3;2;1},ROW($1:$100)))/1%%+ROW($1:$100),ROW()+INT(ROW(A10)/10+INT(COLUMN(B1)/2))*10-21),4),MOD(COLUMN(B1),2))&""


純公式研究 可再省三字元 大頭老師此公式思維值得讚賞 ^^
=OFFSET($B$1,RIGHT(SMALL(IF({1,0},MATCH($B$2:$B$101,$C:$C,),SMALL(7.1-(COLUMN($A:$T)<=MOD(20-MOD(COUNTIF($B:$B,$C$2:$C$6),20),20))*{5;4;3;2;1},ROW($1:$100)))/1%%+ROW($1:$100),ROW(A1)+(COLUMN()>6)*10+10*INT((ROW()-2)/10)),4),-MOD(COLUMN(),2))&""
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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