Excel精英培训网

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

[已解决]请老师们完善一下VBA代码

[复制链接]
发表于 2010-10-26 12:24 | 显示全部楼层 |阅读模式
bPcOBysJ.rar (55.17 KB, 下载次数: 0)
发表于 2010-10-26 13:26 | 显示全部楼层

Sub 计算()
    Dim ArrYS, ArrJG, ArrZZ
    Dim i&, j&, Temp&
    Dim d As Object
    Dim SDate, EDate
    ArrYS = Sheet1.Range("F3:AH" & Sheet1.Range("F65536").End(xlUp).Row)
    ArrZZ = Sheet3.Range("A2:C" & Sheet3.Range("A65536").End(xlUp).Row)
    Set d = CreateObject("Scripting.Dictionary")
    With Sheet2
        SDate = .Range("m1")
        EDate = .Range("o1")
        For k = 1 To 2
            ArrJG = .Range(.Cells(4, k * 6 - 5), .Cells(.Cells(.Cells.Rows.Count, k * 6 - 5).End(xlUp).Row, k * 6 - 1))
            d.RemoveAll
            For i = 1 To UBound(ArrJG)
                d(ArrJG(i, 1)) = i
                ArrJG(i, 3) = WorksheetFunction.VLookup(ArrJG(i, 1), ArrZZ, 3, 0)
                ArrJG(i, 4) = 0
                ArrJG(i, 5) = 0
            Next i
            For i = 1 To UBound(ArrYS)
                If d.exists(ArrYS(i, 29)) Then
                    Temp = d(ArrYS(i, 29))
                    If ArrYS(i, 1) < SDate Then
                        ArrJG(Temp, 3) = ArrJG(Temp, 3) + ArrYS(i, 14) - ArrYS(i, 15)
                    ElseIf ArrYS(i, 1) >= SDate And ArrYS(i, 1) <= EDate Then
                        ArrJG(Temp, 4) = ArrJG(Temp, 4) + ArrYS(i, 14)
                        ArrJG(Temp, 5) = ArrJG(Temp, 5) + ArrYS(i, 15)
                    End If
                End If
            Next i
            .Cells(4, k * 6 - 5).Resize(UBound(ArrJG, 1), UBound(ArrJG, 2)) = ArrJG
        Next k
    End With
End Sub
回复

使用道具 举报

 楼主| 发表于 2010-10-26 15:14 | 显示全部楼层

测试后,出现错误,具体如下:

错误代码:1004

错误解析:应用程序定义或对象定义错误.

amulee老师再给看看,谢谢!

[此贴子已经被作者于2010-10-26 15:15:16编辑过]
回复

使用道具 举报

发表于 2010-10-26 15:21 | 显示全部楼层    本楼为最佳答案   

QUOTE:
以下是引用caishensi在2010-10-26 15:14:00的发言:

测试后,出现错误,具体如下:

错误代码:1004

错误解析:应用程序定义或对象定义错误.

amulee老师再给看看,谢谢!


我测试没问题啊

3znFAcYI.rar (62.45 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2010-10-26 19:20 | 显示全部楼层

不好意思,自己搞错啦,测试没问题了,不过还有一个问题想请amulee老师完善一下,生成汇总数据要四舍五入到小数点后两位,要不然会出现科学计数现象,谢谢!
回复

使用道具 举报

 楼主| 发表于 2010-10-26 19:34 | 显示全部楼层

TejinVMz.rar (46.61 KB, 下载次数: 0)
回复

使用道具 举报

 楼主| 发表于 2011-1-17 21:27 | 显示全部楼层
回复 amulee 的帖子

请amulee老师再改下,我想只要科目汇总表的A:F就行了,劳烦老师改下代码,具体见附件,谢谢!

记帐凭处理系统-amulee.rar

59.84 KB, 下载次数: 0

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 04:29 , Processed in 0.267327 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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