應用VBA在Excel表中執行統計

  臨時接到一個Excel表,要執行統計工作,手工做法很麻煩,應用VBA稍微熟悉一點。

  很長時間不做的話就會陌生,寫一點記錄以備後查。
 1、在一個模塊中定義結構體,用於記錄數據,一般是針對一行一個結構體。

            '定義物料編碼的結構體
        Public Type WZStruct
                 WLBM      As String           '物料編碼
                 WLZ       As String           '物料組
                 WLMS      As String           '物料描述
                 DW        As String           '單位
                 WLSum2017 As Single           '計算統計的和
                 WLSum2018 As Single           '計算統計的和
                 WLSum2019 As Single           '計算統計的和
                 WL2017    As Integer          '統計2017個數
                 WL2018    As Integer          '統計2018個數
                 WL2019    As Integer          '統計2019個數
        End Type

        Public WZYQCY(6639) As WZStruct   '6639行數據

        2、常用的操作記錄:

            '補全信息
                '先搜索2017表
                Sheets("2017年消耗").Activate
                For IFor = 1 To MaxFor
                                DoEvents
                                '1.取列表的物料編碼
                                WZYQCY(IFor).WLBM = ListBox1.List(IFor)
                                '搜索物料編碼所在的行
                                Set FindCellOK = Worksheets("2017年消耗").Columns("B").Find(what:=WZYQCY(IFor).WLBM)
                                If Not FindCellOK Is Nothing Then
                                        '2.物料組
                                        Range("A" + Trim(Str(FindCellOK.Cells.Row))).Select
                                        WZYQCY(IFor).WLZ = Selection.Formula
                                        '3.物料描述
                                        Range("C" + Trim(Str(FindCellOK.Cells.Row))).Select
                                        WZYQCY(IFor).WLMS = Selection.Formula
                                        '4.單位
                                        Range("D" + Trim(Str(FindCellOK.Cells.Row))).Select
                                        WZYQCY(IFor).DW = Selection.Formula
                                        '5.統計消耗量
                                        'WZYQCY(IFor).WLSum = Application.SumIf(Sheets("2017年消耗").Range("B2:B4386"), WZYQCY(IFor).WLBM, Sheets("2017年消耗").Range("F2:F4386"))
                                        '6.統計個數
                                        'WZYQCY(IFor).WL2017 = Application.CountIf(Sheets("2017年消耗").Range("B2:B4386"), WZYQCY(IFor).WLBM)
                                End If
                Next

                3、一般可以錄製宏以後然後修改錄製的編碼,但是VBA裏面略有不同。

'插入形成的數據行
Sheets("小修1").Activate
For IFor = 1 To MaxFor
    '插入一個新行
    Range("A" + Trim(Str(IFor + 2))).Select
    Selection.Insert Shift:=xlDown
    '更新數據
    '序號
    Range("A" + Trim(Str(IFor + 2))).Select
    Selection.Formula = Str(IFor)
    '物料組
    Range("B" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).WLZ
    '物料編碼
    Range("C" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).WLBM
    '物料描述
    Range("D" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).WLMS
    '單位
    Range("E" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).DW
    '2017年數據
    Range("G" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).WL2017
    '2018年數據
    Range("H" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).WL2018
    '2019年數據
    Range("I" + Trim(Str(IFor + 2))).Select
    Selection.Formula = WZYQCY(IFor).WL2019
Next
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章