ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] [原创]骗你爱上数组公式

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2003-4-19 14:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:数组公式
楼上的听好:你看数据表是从$B$8开始的

TA的精华主题

TA的得分主题

发表于 2003-4-20 01:44 | 显示全部楼层
2.求记录中共有几种产品(即产品编号中不重复的编号总数) {=SUM(1/COUNTIF($B$8:$B$21,$B$8:$B$21))} 我们是这样来考虑的: 求共有几种产品,最好是把产品出现的次数加起来,但是产品都是重复出现的,如果每个产品都按1来计算的话 出来的结果就肯定不对,最好是凡是一种产品的加起来就等于1,那么就最好了 有了这种想法,便有了1/COUNTIF($B$8:$B$21,$B$8:$B$21),去查找每个产品编号共出现了几次 出现N次,就让它等于1/N, 如"AA"共出现了4次,那么让每个"AA"都对应一个值"1/4", 把4个1/4相加就得出了1,也就是说只要有不同的编号存在,每个编号都会被分成N份,并加上N次 (这一条可能记住公式的人不少,真正理解的不多,我也口齿不大清楚,听的懂听不懂的请多原谅) 好象有问题,countif和sum同为数组函数,嵌套时不会产生二维计算的结果。

TA的精华主题

TA的得分主题

发表于 2003-4-20 16:45 | 显示全部楼层

好极了,我已着魔。

你的文章我下载看了,太精彩了。如果你能继续研究下去出一本专集的话,很多人会更好加喜欢这个了。 很有实际意义。支技你的研究。

TA的精华主题

TA的得分主题

发表于 2003-4-21 09:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用PENGPAI在2003-4-19 12:47:07的发言: 以下是引用bigbigpig在2003-4-17 16:21:55的发言: 数据格从第8行开始啊! 能否说一下怎么知道就从第8行开始的,这个思路我老是弄不清楚
to PENGPAI: sharkgun君已经帮我回答了。如果你还不明白的话,请你仔细看一下原来的工作表上的数据的位置。此外,如果要使这个公式有通用性,你可以将-7改为-row(ref_range)+1,ref_range为要统计的数据的第一个单元格的地址。
[此贴子已经被作者于2003-4-21 10:06:05编辑过]

TA的精华主题

TA的得分主题

发表于 2003-4-21 11:24 | 显示全部楼层
-- 作者:flli883 -- 发布时间:2003-4-20 1:44:58 -- 2.求记录中共有几种产品(即产品编号中不重复的编号总数) {=SUM(1/COUNTIF($B$8:$B$21,$B$8:$B$21))} 我们是这样来考虑的: 求共有几种产品,最好是把产品出现的次数加起来,但是产品都是重复出现的,如果每个产品都按1来计算的话 出来的结果就肯定不对,最好是凡是一种产品的加起来就等于1,那么就最好了 有了这种想法,便有了1/COUNTIF($B$8:$B$21,$B$8:$B$21),去查找每个产品编号共出现了几次 出现N次,就让它等于1/N, 如"AA"共出现了4次,那么让每个"AA"都对应一个值"1/4", 把4个1/4相加就得出了1,也就是说只要有不同的编号存在,每个编号都会被分成N份,并加上N次 (这一条可能记住公式的人不少,真正理解的不多,我也口齿不大清楚,听的懂听不懂的请多原谅) 好象有问题,countif和sum同为数组函数,嵌套时不会产生二维计算的结果。 -------------------------------------------------------------------------------- 回flli883: 你说“好象有问题....”我不知你发现有什么不妥的地方。 我也是新手一个,刚刚通过这篇文章来学数组的。对于{=SUM(1/COUNTIF($B$8:$B$21,$B$8:$B$21))这个公式我是通过分解的方法来理解的:先在单元格G8:G21输入={COUNTIF($B$8:$B$21,$B$8:$B$21)},得出对应各产品出现的次数,再在H8:H21中求出1/G8:G21,最后在H22中SUM(H8:H21),你看是不是得出“4”的答案? 其实对我来说最难理解的是为什么COUNTIF(Range,Criteria)函数的第二个参数Criteria怎么和它的第一个参数Range一样也是区域$B8:$B21?后来我理解为既然是数组函数,其实第二个参数也就是一个一个地求区域$B8:$B21中的各个产品,即{AA,AA,BB,BB,....DD}。不知是不是这样的,反正我是这样理解的。 附表一个以助说明。 也许我的看法太菜,各位大侠别笑~~~~~~~还笑?!,臭鸡蛋......,我扔,我扔,我扔扔扔..............

TA的精华主题

TA的得分主题

发表于 2003-4-21 11:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-4-21 15:23 | 显示全部楼层
对于Eraser2000文章PartVI中对不重复的清单,我从Excel 2002宝典中看到另一种计算方法: 选定单元格E7:E20输入以下公式($B$7:$B$20已命名为K): {=INDEX(k,SMALL(IF(MATCH(k,k,0)=ROW(INDIRECT("1:"&ROWS(k))),MATCH(k,k,0),""),ROW(INDIRECT("1:"&ROWS(k)))))} 选定单元格F7:F20输入以下公式可消除单元格E15:E20中的#NUM!: {=IF(ISERR(SMALL(IF(MATCH(k,k,0)=ROW(INDIRECT("1:"&ROWS(k))),MATCH(k,k,0),""),ROW(INDIRECT("1:"&ROWS(k))))),"",INDEX(k,SMALL(IF(MATCH(k,k,0)=ROW(INDIRECT("1:"&ROWS(k))),MATCH(k,k,0),""),ROW(INDIRECT("1:"&ROWS(k))))))}

TA的精华主题

TA的得分主题

发表于 2003-4-24 08:54 | 显示全部楼层
这句是什么意思,请给解释,谢谢! SMALL(IF(ROW($B$7:$B$20)-6=MATCH($B$7:$B$20,$B$7:$B$20,0),ROW($B$7:$B$20)-6,"0")

TA的精华主题

TA的得分主题

发表于 2003-4-24 13:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2003-4-26 12:03 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 19:11 , Processed in 0.043862 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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