美文网首页
使用字典和数组配合进行月报表汇总

使用字典和数组配合进行月报表汇总

作者: 麦睿蔻 | 来源:发表于2020-04-30 15:42 被阅读0次

两个月报表格,每个表格是按照类别产品名称、发货类型以及发货时间分类的的发货数量表,其中货品名称有重复,需要累加汇总至模板格式的大报表中。如下图:


1.png 2.png 3.png

VBA解决方案代码如下:

Sub 报表()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim d1 As Object
    Dim d2 As Object
    Set d1 = CreateObject("scripting.dictionary")
    Dim arr, brr, crr(1 To 12, 1 To 62), drr, err, kk, tt
    Dim lrow As Long, lcol As Long, lrow2 As Long
    Dim m As Integer, n As Integer
    Dim sht As Worksheet
    For Each sht In Worksheets
        If sht.Name <> "LCM" And sht.Name <> "ITC" And sht.Name <> "模板" Then
            sht.Delete
        End If
    Next
    With Sheets("LCM")
        lrow = .Cells(Rows.Count, 3).End(3).Row
        lcol = .Cells(2, Columns.Count).End(1).Column
        For i = 3 To lrow Step 12
            If Not d1.exists(.Range("a" & i).Value) Then
                arr = .Range("d" & i & ":AH" & i + 11)
                For m = 1 To 12
                    For n = 1 To lcol - 3
                        crr(m, n * 2 - 1) = arr(m, n)
                    Next
                Next
                d1(.Range("a" & i).Value) = crr
            Else
                brr = .Range("d" & i & ":AH" & i + 11)
                err = d1(.Range("a" & i).Value)
                For m = 1 To 12
                    For n = 1 To lcol - 3
                        err(m, n * 2 - 1) = err(m, n * 2 - 1) + brr(m, n)
                    Next
                Next
                d1(.Range("a" & i).Value) = err
            End If
        Next
    End With
    With Sheets("ITC")
        lrow2 = .Cells(Rows.Count, 3).End(3).Row
        For i = 3 To lrow2 Step 12
            If Not d1.exists(.Range("a" & i).Value) Then
                arr = .Range("d" & i & ":AH" & i + 11)
                Erase crr '重要,否则将把表一中的数据代入
                For m = 1 To 12
                    For n = 1 To lcol - 3
                        crr(m, n * 2) = arr(m, n)
                    Next
                Next
                d1(.Range("a" & i).Value) = crr
            Else
                brr = .Range("d" & i & ":AH" & i + 11)
                drr = d1(.Range("a" & i).Value)
                 For m = 1 To 12
                    For n = 1 To lcol - 3
                        drr(m, n * 2) = drr(m, n * 2) + brr(m, n)
                    Next
                Next
                d1(.Range("a" & i).Value) = drr
            End If
        Next
    End With
    kk = d1.items
    tt = d1.keys
    Worksheets.Add after:=Worksheets(Worksheets.Count)
    ActiveWindow.Zoom = 90 '页面显示比例为90%
    ActiveSheet.Cells.Clear
    For i = 1 To d1.Count
        Sheets("模板").Rows("2:18").Copy ActiveSheet.Rows(i * 18 - 16)
    Next
    For i = 0 To d1.Count - 1
        ActiveSheet.Range("b" & i * 18 + 5) = tt(i)
        ActiveSheet.Range("e" & (i * 18 + 5)).Resize(12, 62) = kk(i)
    Next
    ActiveSheet.Columns(2).ColumnWidth = 14 '设置B列列宽为14pt
    Application.ScreenUpdating = False
    Application.DisplayAlerts = True
End Sub

最终效果如下:


4.png

相关文章

  • 使用字典和数组配合进行月报表汇总

    两个月报表格,每个表格是按照类别产品名称、发货类型以及发货时间分类的的发货数量表,其中货品名称有重复,需要累加汇总...

  • Swift 下标

    让对象和结构体如同数组和字典一样使用[ ]的形式进行对象访问

  • RAC集合

    在RAC中可以使用RACSequence,来进行对数组以及字典的快速便利 1、RAC对字典进行遍历 对字典遍历出来...

  • ios基础

    字典 NSDictionary 的使用 可变字典 NSMutableDictionary 的使用 数组(NSArr...

  • Day27销售业绩仪表盘(上 )

    使用PowerQuery合并报表,创建销售明细表。 课程不难,主要是对数据透视表内容进行汇总学习使用。 1、在视图...

  • lambda

    针对字典进行排序 针对数组,其每个元素为字典,按照字典的某个key进行排序

  • iOS-开发兼容 Crash的类(数组、字典、字符串等等)减少线

    这里主要针对数组和字典的常用 API,使用不规范会引起 Crash 的 API 进行容错处理。 这里为了方便,直接...

  • Julia快速入门(五)多维数组 字典

    本篇代码在Julia1.0.2中测试通过 多维数组 多维数组定义 多维数组生成 字典 Julia使用Dict(字典...

  • 将所有对象存到数据库中

    原帖地址 如果将字典或数组直接存储在数据库中,会将数组或字典转化成字符串,所以可以使用归档与反归档的方法将数据进行...

  • IOS中字典数组的模型封装

    用模型取代字典数组的好处 使用字典的弊端 一般情况下设置字典数据和取出字典数据都得使用字符串类型的"key",编写...

网友评论

      本文标题:使用字典和数组配合进行月报表汇总

      本文链接:https://www.haomeiwen.com/subject/sjazwhtx.html