Excel精英培训网

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

[已解决]帮看下代码哪有问题

[复制链接]
发表于 2011-11-18 15:32 | 显示全部楼层 |阅读模式
本帖最后由 lgzxmlg 于 2011-11-18 21:39 编辑

帮看下代码哪有问题,第三项为什么计算错误? Book1.zip (10.08 KB, 下载次数: 6)
 楼主| 发表于 2011-11-18 16:10 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-11-18 19:22 | 显示全部楼层
回复

使用道具 举报

发表于 2011-11-18 20:14 | 显示全部楼层
没说明!猜不出来!
应该就是IF 语句 逻辑不对!
回复

使用道具 举报

发表于 2011-11-18 20:50 | 显示全部楼层
我猜一下
Sub test()
Dim arr, brr
Dim i As Integer, K As Integer
Dim arrData As Variant
Set D = CreateObject("Scripting.Dictionary")
Dim T As Date, T1 As Date
    T = Sheets("信息表").Range("h2")  '开始日期
    T1 = Sheets("信息表").Range("j2")    '结束日期
With Sheets("高炉铁水整理")
    arr = .Range("c2:k" & .[c65536].End(3).Row)
End With
brr(1 To UBound(arr), 1 To 4)
For i = 1 To UBound(arr)
    If arr(i, 1) >= T And arr(i, 1) <= T1 Then
        If D.Exists(arr(X, 1)) Then
           ICOL = D(arr(X, 1))
           brr(2, ICOL) = brr(2, ICOL) + arr(i, 3)
           If arr(i, 8) > 35 Then brr(3, ICOL) = brr(3, ICOL) + arr(i, 3)
           If arr(i, 5) > 35 Then brr(4, ICOL) = brr(4, ICOL) + arr(i, 3)
        Else
            K = K + 1
            D(arr(i, 1)) = K
            ReDim Preserve brr(1 To 4, 1 To K)
            brr(1, K) = arr(i, 1)
            brr(2, K) = arr(i, 3)
            If arr(i, 8) > 35 Then brr(3, K) = arr(i, 3)
            If arr(i, 5) > 35 Then brr(4, K) = arr(i, 3)
        End If
    End If
Next
With Sheets("信息表")
     .[k5:s65536].ClearContents
     .[k5].Resize(K, 4) = Application.Transpose(brr)
End With
Set D = Nothing
End Sub
回复

使用道具 举报

 楼主| 发表于 2011-11-18 21:19 | 显示全部楼层
mxg825 发表于 2011-11-18 20:50
我猜一下
Sub test()
Dim arr, brr

brr(1 To UBound(arr), 1 To 4)
提示无效
回复

使用道具 举报

 楼主| 发表于 2011-11-18 21:41 | 显示全部楼层
我上传了附件,再帮看下,谢谢
回复

使用道具 举报

发表于 2011-11-18 21:52 | 显示全部楼层
删掉这句、忘了删掉
回复

使用道具 举报

发表于 2011-11-18 22:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 mxg825 于 2011-11-18 22:09 编辑
  1. Sub testMXG825()
  2. Dim arr, brr()
  3. Dim i As Integer, K As Integer, Icol As Integer
  4. Dim arrData As Variant
  5. Set D = CreateObject("Scripting.Dictionary")
  6. Dim T As Date, T1 As Date
  7. T = Sheets("信息表").Range("h2") '开始日期
  8. T1 = Sheets("信息表").Range("j2") '结束日期
  9. With Sheets("高炉铁水整理")
  10. arr = .Range("c2:k" & .[c65536].End(3).Row)
  11. End With
  12. For i = 1 To UBound(arr)
  13. If arr(i, 1) >= T And arr(i, 1) <= T1 Then
  14. If D.Exists(arr(i, 1)) Then
  15. Icol = D(arr(i, 1))
  16. brr(2, Icol) = brr(2, Icol) + arr(i, 3)
  17. If arr(i, 8) > 35 Then brr(3, Icol) = brr(3, Icol) + arr(i, 3)
  18. If arr(i, 5) > 35 Then brr(4, Icol) = brr(4, Icol) + arr(i, 3)
  19. Else
  20. K = K + 1
  21. D(arr(i, 1)) = K
  22. ReDim Preserve brr(1 To 4, 1 To K)
  23. brr(1, K) = arr(i, 1)
  24. brr(2, K) = arr(i, 3)
  25. If arr(i, 8) > 35 Then brr(3, K) = arr(i, 3)
  26. If arr(i, 5) > 35 Then brr(4, K) = arr(i, 3)
  27. End If
  28. End If
  29. Next
  30. With Sheets("信息表")
  31. .[k5:s65536].ClearContents
  32. .[k5].Resize(K, 4) = Application.Transpose(brr)
  33. End With
  34. Set D = Nothing
  35. End Sub
复制代码

回复

使用道具 举报

 楼主| 发表于 2011-11-18 22:08 | 显示全部楼层
mxg825 发表于 2011-11-18 21:52
删掉这句、忘了删掉

删掉后,提示政界越界。不知什么原因
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 20:10 , Processed in 0.664091 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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