ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第32期]各ID发贴最多版块及数量

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-2-28 14:32 | 显示全部楼层

由于本期较为简单,所以只是把出题的主要点说一下:

前几期都是一个公式右拉,节省字符的方式是整体考虑方式,但这次如果还是不改变方向(整体公式),那长度做在360以内就比较困难(虽然也是可以做到).所以考虑公式时能根据具体情况改变思维惯性作具体分析是出本题的出发点之一.

本次要用3个独立的公式,要注意的是$的节省方案.($本期主要考点)

另本题属于春节其间的题,因而各个独立的公式都不复杂,字符长度限制比较宽松.所以$的情况不考虑也可以完成(如果设置为288好象是能考虑到$考点的转折点)

这是我的答案(长度258):
=IF(AND(COUNTIF($D$1:$D1,$A$1:$A$18)),"",CHOOSE(COLUMN(A1),INDEX(A:A,MIN(IF(COUNTIF(D$1:D1,A$2:A18)=0,ROW($2:18)))),INDEX(A:A,RIGHT(MAX(MMULT(N(A$2:A18=TRANSPOSE(A$2:A18)),($A$2:$A18=C2)*B$2:B18)+ROW($2:18)%%),4)),SUM(($A$2:$A18&$B$2:$B18=B2&C2)*(A$2:A18))))

TA的精华主题

TA的得分主题

发表于 2008-2-28 20:46 | 显示全部楼层
QUOTE:
以下是引用willin2000在2008-2-28 14:32:37的发言:

..............

这是我的答案(长度258):
=IF(AND(COUNTIF($D$1:$D1,$A$1:$A$18)),"",CHOOSE(COLUMN(A1),INDEX(A:A,MIN(IF(COUNTIF(D$1:D1,A$2:A18)=0,ROW($2:18)))),INDEX(A:A,RIGHT(MAX(MMULT(N(A$2:A18=TRANSPOSE(A$2:A18)),($A$2:$A18=C2)*B$2:B18)+ROW($2:18)%%),4)),SUM(($A$2:$A18&$B$2:$B18=B2&C2)*(A$2:A18))))

谢谢版主,学会了min(Countif)的一种用法。

 

不过版主的公式还有一个小问题。用Right取小数部分,尾数位0的数加%%后的小数位不足4位,Right取的会不对。例如把B10改成“VBA”,公式结果就不对了。

QUOTE:

谢谢2008指出关于使用%%用法时10倍数的问题,修改成:

261
=IF(AND(COUNTIF($D$1:$D1,$A$1:$A$18)),"",CHOOSE(COLUMN(A1),INDEX(A:A,MIN(IF(COUNTIF(D$1:D1,A$2:A18)=0,ROW($2:18)))),INDEX(A:A,10^4*MOD(MAX(MMULT(N(A$2:A18=TRANSPOSE(A$2:A18)),($A$2:$A18=C2)*B$2:B18)+ROW($2:18)%%),1)),SUM(($A$2:$A18&$B$2:$B18=B2&C2)*(A$2:A18))))

或260
=IF(AND(COUNTIF($D$1:$D1,$A$1:$A$18)),"",CHOOSE(COLUMN(A1),INDEX(A:A,MIN(IF(COUNTIF(D$1:D1,A$2:A18)=0,ROW($2:18)))),INDEX(A:A,MOD(MAX(MMULT(N(A$2:A18=TRANSPOSE(A$2:A18)),($A$2:$A18=C2)*B$2:B18)*100+ROW($2:18)),100)),SUM(($A$2:$A18&$B$2:$B18=B2&C2)*(A$2:A18))))     
-wilin2000

[此贴子已经被willin2000于2008-2-28 21:33:36编辑过]

TA的精华主题

TA的得分主题

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

上面的各位老师的答案都很精彩,让我受益非浅

这里有两个问题想请教版主

其一:willin2000版主公式中MOD(100.0014,1)为什么会得到0.00140000000000384这样的结果

QUOTE:
EXCEL浮点运算精度问题. -willin2000

其二:公式中MMULT(N(B$2:B18=TRANSPOSE(B$2:B18)),($A$2:$A18=D2)*C$2:C18)的第一个参数B$2:B18=TRANSPOSE(B$2:B18)一个17行1列的数据于1行17列的数据如何比较,可否理解为它会自动扩充为17行17列的矩阵。

QUOTE:

是的,行列比较不需要行=列,因为是每一行里的数据逐个和所有列数据比. 详见http://club.excelhome.net/viewthread.php?tid=270255&replyID=&skin=0   -willin2000

[此贴子已经被willin2000于2008-3-1 22:20:07编辑过]

TA的精华主题

TA的得分主题

发表于 2008-3-12 00:23 | 显示全部楼层

取ID不重值,如果用INDEX(A:A,MATCH(,COUNTIF(D$1:D1,A$1:A19),)),公式总长度还可以再短些13个字符

TA的精华主题

TA的得分主题

发表于 2011-9-9 11:19 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 00:25 , Processed in 0.045852 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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