應用VBA在Excel表中執行統計

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

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

'定義物料編碼的結構體
        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行數據

        二、經常使用的操做記錄:

            '補全信息
                '先搜索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

                三、通常能夠錄製宏之後而後修改錄製的編碼,可是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
相關文章
相關標籤/搜索