ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] [原创]RANK的三维引用和COUNTIF的四维引用

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-1-20 21:34 | 显示全部楼层
本帖已被收录到知识树中,索引项:RANK
ding

TA的精华主题

TA的得分主题

发表于 2006-1-20 23:18 | 显示全部楼层
没有看懂,能解释一下吗

TA的精华主题

TA的得分主题

发表于 2006-1-21 10:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
还是多人没看的懂啊,收下研究下

TA的精华主题

TA的得分主题

发表于 2006-2-2 20:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这在学生成绩管理中很有用!!

TA的精华主题

TA的得分主题

发表于 2006-2-3 14:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
收藏后,慢慢研究。谢谢。

TA的精华主题

TA的得分主题

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

高,对数组的应用已是出神入化了,"德道高僧".佩服!

TA的精华主题

TA的得分主题

发表于 2006-2-22 02:26 | 显示全部楼层

我的“多维引用”的理解。

此题是Apolloh兄对一维中国式排名应用的扩展,解得好! 大家一般都知道1维、2维引用,常驻函数版的朋友大多听说过3维引用,这次Apolloh兄提出了4维引用,我借此机会与大家讨论一下。 1、首先,如Countif(A2:A6,">0"),这是简单的1维引用--统计B列中>0的数值个数;又如:Countif(B2:D6,"张*"),这是2维引用--统计B2:D6中姓“张”的人员数。这两个实例都比较典型。 2、接下来再看,Countif(Offset($B$1:$D$1,{1;2;3;4;5},0),"张*"),这个实例就是我们常说的“三维引用”--此用法大家也应该见过,即是在B2:D2、B3:D3、B4:D4、B5:D5、B6:D6,这5行数据中分别逐行统计出张姓的单元格个数,而且运算结果是在内存中得到一个可以再次利用的1列5行的内存数组。 3、可能很多朋友不能够理解,为何要称它为"三维引用"呢?我的理解是: 1)既然称其为引用,那么其中的关键参数(如:Countif()的参数1、Sumif()的参数1和参数3等)应该必须为单元格引用,而不能是运算后的数值或内存数组; 2)何为“三维”,必须是通过函数重新构造间接引用来进行运算,如第2条Countif()中的Offset()函数段,即是在内存中间接产生5个独立的引用区域来实现统计。 3)因此,“三维引用”可以理解为:在几何中的“点到线、线到面、面到体”的概念,我想这样比喻,大家可能会觉得更加形象一些。 4、最后我们再来看Apolloh兄的那段函数公式代码: COUNTIF(OFFSET(D6:L6,ROW(D6:L14)-ROW(D6:L6),,,COLUMN(D6:L6)-COLUMN(C6)),D6:L14) 当然,在这里我们也主要看其中的Offset()构造函数,其实在Offset()函数中,您只要对引用区域动态指定行高或列宽,那么对于基点的引用,你用1个单元格和1系列连续单元格作基点,对于系统来说都是一样的,系统自动会识别为“引用区域的左上角单元格”来作为基点的。 因此,Offset()简化为:OFFSET(D6,ROW(D6:L14)-6,0,1,COLUMN(D6:L6)-3) 1)从这个公式来看,按前面的几何概念可以理解为:系统首先应该是用动态列宽参数先构造(D6、D6:E6、D6:F6、D6:G6、D6:H6、D6:I6、D6:J6、D6:K6、D6:L6)9个区域--(点->线、线->面)过程,我们可以通过转换为图形来看--是否更象一个梯形。 2)接下来,Offset()再通过行偏移参数来产生引用区域的行偏移,即在立体空间上看成:在垂直方向上再次构造9个面--(面->体),看似梯形体--楼梯,有点象吧:) 3)从而产生新的(9*9)引用区域来实现分别统计计算。 但大家千万别忘记了在前面的Countif()中还有一个隐藏的交叉引用来实现对D6:L14各个值的统计。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-2-22 08:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主的东西,下下来再说..

TA的精华主题

TA的得分主题

发表于 2006-2-22 10:54 | 显示全部楼层
各位版主能否详细的解释一下:"Countif()中还有一个隐藏的交叉引用",给兄弟们长长见识!

TA的精华主题

TA的得分主题

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

确实Countif()和Sumif()还有这个用法:

如题中的:Countif(OFFSET(D6,ROW(D6:L14)-6,0,1,COLUMN(D6:L6)-3),D6:L6),该公式就是统计
D6在D6:D6、E6在D6:E6、F6在D6:F6、。。。L6在D6:L6中分别统计存在个数,这样也实现了同一列中相同数值不同排名的问题。

当然平时在Sumif()中也可以这样用,需要看实际的问题来具体分析了。

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

本版积分规则

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

GMT+8, 2024-11-16 15:57 , Processed in 0.048178 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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