Excel精英培训网

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

[已解决]【重复数据累计统计】续1

[复制链接]
发表于 2016-12-5 14:03 | 显示全部楼层 |阅读模式

代码:
Sub tt()
Application.ScreenUpdating = False
Application.Interactive = False
Dim i&, dic As Object, arr1
    Set dic = CreateObject("scripting.dictionary")
    With Sheet1
        arr1 = .Cells(1, "a").Resize(.Cells(Rows.Count, "a").End(3).Row - 1, 2).Value
        For i = 1 To UBound(arr1)
            dic(arr1(i, 1)) = dic(arr1(i, 1)) + 1
        Next
        For i = 1 To UBound(arr1)
            arr1(i, 2) = dic(arr1(i, 1))
        Next
        .Cells(1, "e").Resize(UBound(arr1), 1) = Application.Index(arr1, , 2)
    End With
Dim m&, d As Object, arr2
    Set d = CreateObject("scripting.dictionary")
    With Sheet1
        arr2 = .Cells(1, "c").Resize(.Cells(Rows.Count, "c").End(3).Row - 1, 2).Value
        For m = 1 To UBound(arr2)
            d(arr2(m, 1)) = d(arr2(m, 1)) + 1
        Next
        For m = 1 To UBound(arr2)
            arr2(m, 2) = d(arr2(m, 1))
        Next
        .Cells(1, "f").Resize(UBound(arr2), 1) = Application.Index(arr2, , 2)
    End With
Dim x&‘这是我用笨办法得到了累加统计数
       For x = 1 To 518400
       Cells(x, "e") = Cells(x, "e") - 1
       Cells(x, "b") = Cells(x, "b") + Cells(x, "e")
       Cells(x, "f") = Cells(x, "f") - 1
       Cells(x, "d") = Cells(x, "d") + Cells(x, "f")
   Next
  Application.ScreenUpdating = True
  Application.Interactive = True
  End Sub

问题及希望:
1、运行后提示“运行时错误13,类型不匹配”。查找并修改变量类型半天无结果,就用改变行数大小一步一步来试,结果跟预料一样,一超过65536行就错误,65536行都正常运行。可我用的是2013表格,有1048576行,估计还是代码上受到限制,请老师指正。
2、希望精简优化代码,取消e、f两列辅助数据,一步到位直接得到b、d列的累加数据。
最佳答案
2016-12-7 10:53
  1. 参考附件
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-12-5 14:16 | 显示全部楼层
看看这个工作薄的扩展名是不是.xls
回复

使用道具 举报

 楼主| 发表于 2016-12-5 14:19 | 显示全部楼层
望帝春心 发表于 2016-12-5 14:16
看看这个工作薄的扩展名是不是.xls

是.xlsm,难道就是这个问题?
回复

使用道具 举报

发表于 2016-12-5 14:23 | 显示全部楼层
先注释一部份代码:
如果有报错,就从当前代码中,再注释一部份检查
如果没报错,就从注释代码中,再注释一部分检查

就这么一直不断分别判断,。。。直到找出是哪句的错,再看。
回复

使用道具 举报

发表于 2016-12-5 14:46 | 显示全部楼层
mjola1 发表于 2016-12-5 14:19
是.xlsm,难道就是这个问题?

是这个格式的工作薄也可能只有65536行(可能是直接从.xls文件另存过来的),最直接的就是你肉眼看看这个表是不是65536行
回复

使用道具 举报

 楼主| 发表于 2016-12-5 14:53 | 显示全部楼层
爱疯 发表于 2016-12-5 14:23
先注释一部份代码:
如果有报错,就从当前代码中,再注释一部份检查
如果没报错,就从注释代码中,再注释 ...

[@4V7FM5UT4VOENO(0AYVPR.png
老师,帮忙看下。
回复

使用道具 举报

 楼主| 发表于 2016-12-5 14:56 | 显示全部楼层
望帝春心 发表于 2016-12-5 14:46
是这个格式的工作薄也可能只有65536行(可能是直接从.xls文件另存过来的),最直接的就是你肉眼看看这个 ...

P9D0{%WA[]YYN{U5R1@I~$D.png
回复

使用道具 举报

发表于 2016-12-5 14:59 | 显示全部楼层
建议直接上传附件,以便测试。
回复

使用道具 举报

 楼主| 发表于 2016-12-5 15:04 | 显示全部楼层
我用的是 `C`8`T5WZ92}3U~_Q%S5(_E.png
是个破解版,有关系吗?

回复

使用道具 举报

 楼主| 发表于 2016-12-5 15:16 | 显示全部楼层
爱疯 发表于 2016-12-5 14:59
建议直接上传附件,以便测试。

1.rar (422.52 KB, 下载次数: 10)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 01:26 , Processed in 0.382835 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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