EXCEL有一个问题,由于数据量大,通常的COUNTIF等函数太慢不予采纳,求其他方法,函数和VBA都行,

问题描述:

EXCEL有一个问题,由于数据量大,通常的COUNTIF等函数太慢不予采纳,求其他方法,函数和VBA都行,
A列有4万行数据,值从1到462交错分布,要分别求值1到462的平均值分别对应填入B1到B462单元格,还要分别求值1到462的个数分别对应填入到C1到C462单元格.
财富悬赏先设100,正确完成加100,未正确完成不加,认真的无论正确与否给赞成.
1个回答 分类:综合 2014-11-09

问题解答:

我来补答
试过分类汇总或者数据透视表?不能满足要求?
可否截图一看?写代码时有用.
再问: 不需要人为操作的,如果用VBA自动调用数据透视表并将结果粘贴过来也行。大数据很慢,除数据透视表外只要最快的就行。 代码中的地址引用和变量设置我会修改,如果你要写代码,按题意就行。
再答: A列是1~462的数值分布。可对? B列这个平均值是如何求?1出现多少次平均还是1吧 C列计数这个好说
再问: 哎呀,由于光顾问题去了没有讲清楚,462个值各分别对应不同的值若干,求各个值对应数的平均值。A列是1到462交错分布在40000行,B列是0到几千不等交错分布在40000行,求1到462所对应的B列的462个平均值填入C列,D列填462个值的计数。
再答: '欢迎进行速度测试 Sub chiefzjh() Dim a, b(1 To 462, 1 To 2), i% a = Range("a1:b40000") For i = 1 To UBound(a) b(a(i, 1), 1) = b(a(i, 1), 1) + a(i, 2) b(a(i, 1), 2) = b(a(i, 1), 2) + 1 Next i For i = 1 To 462 If b(i, 2) > 0 Then b(i, 1) = b(i, 1) / b(i, 2) Next i Range("c1").Resize(462, 2) = b End Sub
 
 
展开全文阅读
剩余:2000
上一页:周五
下一页:责任的事实论据