Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5561|回复: 6

[已解决]不重复计数的数组公式因为数据量太大死了,请教更好的办法

[复制链接]
发表于 2011-8-8 04:48 | 显示全部楼层 |阅读模式
本帖最后由 kw868 于 2011-8-8 05:58 编辑

用下面这个数组公式 每次都要先对A列排序,而且运行很慢(数据有5万行),请高手指点跟简单快速的公式(因为计算结果还要引用到另外的表,所以不能用透视表)!
G2 =COUNT(0/(FREQUENCY(-OFFSET($B$1,MATCH(E2,$A$2:$A$34862,),,COUNTIF($A$2:$A$34862,E2)),-OFFSET($B$1,MATCH(E2,$A$2:$A$34862,),,COUNTIF($A$2:$A$34862,E2)))))另外有高手指点用VBA,可惜本人对VBA一窍不通,请高手提供一段VBA代码,制作一个宏按钮让我执行去求G列的值。

最佳答案
2011-8-8 08:07
回复 kw868 的帖子

不重复计数(VBA)(字典).rar (481.34 KB, 下载次数: 133)
请教VBA代码.jpg

数组公式因为数据量,请教更好的办法.rar

477.53 KB, 下载次数: 338

附件

发表于 2011-8-8 08:07 | 显示全部楼层    本楼为最佳答案   
回复 kw868 的帖子

不重复计数(VBA)(字典).rar (481.34 KB, 下载次数: 133)
回复

使用道具 举报

发表于 2011-8-8 09:33 | 显示全部楼层
帅哥都回帖了,问题应该解决了吧
回复

使用道具 举报

发表于 2011-8-8 15:46 | 显示全部楼层
还是字典来得快
回复

使用道具 举报

 楼主| 发表于 2011-8-9 11:09 | 显示全部楼层
谢谢2楼“那么的帅 ” 答案正确,也很快!还要请教:我正式文件是跨两个工作表取数的,条件是《合并》工作表的D列等于《进度》工作表的A列,取《合并》工作表G列的不重复计数的值到《进度》工作表的G列。请问2楼这个“字典”代码怎么改?
正式文件的结构.jpg
回复

使用道具 举报

发表于 2011-8-9 23:01 | 显示全部楼层
你重新上传数据源表吧。把要求重新说明一下
回复

使用道具 举报

 楼主| 发表于 2011-8-10 02:17 | 显示全部楼层

超级版主帮忙解决一下,已经上来看很多次了,急用!谢谢!

本帖最后由 kw868 于 2011-8-10 20:54 编辑

本表的G列数值我现在是用数组公式计算出来,但是因为“合计”这个表的数据有5万行,用数组公式太慢,希望请高手帮忙在“ECO达成”这个按钮上替我写一段VBA宏代码来求出G列的值(本表G列值=以本表A列与“合并”工作表的D列相同时,求“合并”表中的G列对应的不重复计数)!
  现在G列的数组公式是 G5==COUNT(0/(FREQUENCY(-OFFSET(合并!$G$1,MATCH($A5,合并!$D$2:$D$40000,),,COUNTIF(合并!$D$2:$D$40000,$A5)),-OFFSET(合并!$G$1,MATCH($A5,合并!$D$2:$D$40000,),,COUNTIF(合并!$D$2:$D$40000,$A5)))))

现在“按钮5”里面的宏代码是二楼“那么的帅”高手替我写的,但是我提供的是一楼的示例文件,所以“按钮5”的代码是正确的,可以要迁移到这个正式表里面了,因为数据跨表引用,不懂怎么改代码,还要继续请教,请帮忙我改写一段VBA宏按钮的字典可以适应到“进度”这个表的“ECO达成”按钮上!我这样说很罗嗦,我的需求就亲看我的截图吧,比较清楚!

G列求值的截图说明

G列求值的截图说明

DSR进度表 (求宏代码).rar

84.5 KB, 下载次数: 4

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-19 15:55 , Processed in 0.295609 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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