报表统计(VBA编程源码下载,产量统计,月度生产报表统计)

Posted

篇首语:忙于采集的蜜蜂,无暇在人前高谈阔论。本文由小常识网(cha138.com)小编为大家整理,主要介绍了报表统计(VBA编程源码下载,产量统计,月度生产报表统计)相关的知识,希望对你有一定的参考价值。

报表统计(VBA编程源码下载,产量统计,月度生产报表统计)

产量记录管理,本文内容中关于产量录入,统计的一些基本功能。

如需要,可及时收藏备用。

上图为录入页,形式简单只有相关人员日期和数量,如果需要可以再进行添加。

上图为统计表,可以对某人的某个月进行记录统计,实际上也算一个查询的功能。

上图为月度统计表。

每月统计数据实现统计计算。

代码

数据录入

Sub 录入信息()On Error Resume NextDim xArr(1 To 4)xArr(1) = Range("D3").ValuexArr(2) = Range("F3").ValuexArr(3) = Range("D4").ValuexArr(4) = Range("F4").ValueDim s As WorksheetSet s = ThisWorkbook.Worksheets("产量统计表")Dim ir As Integer, ic As Integerir = 3ic = 4s.Cells(ir, 1).Resize(1, ic).Insert shift:=xlShiftDownWith s.Cells(ir, 1).Resize(1, ic)    .Clear    .ClearFormats    .RowHeight = 18    .HorizontalAlignment = xlCenter    .VerticalAlignment = xlCenter    .Borders.LineStyle = 1    .Item(1).NumberFormat = "yyyy/mm/dd"    .Value = xArrEnd Withir = s.Cells(s.Rows.Count, 1).End(xlUp).Rows.Cells(ir, 3).Formula = "=Sum(C3:C" & ir - 1 & ")"s.Cells(ir, 4).Formula = "=Sum(D3:D" & ir - 1 & ")"Set s = NothingErase xArrEnd Sub

个人统计

Sub 个人搜索()On Error Resume NextDim xName As String, xCountA As Double, xCountB As Double, xMouth As IntegerDim s As WorksheetSet s = ActiveSheetDelCells sxName = VBA.UCase(VBA.Trim(Range("F2").Value))If VBA.Len(xName) = 0 Then Exit SubIf Not VBA.IsNumeric(s.Range("F3").Value) Then MsgBox "月份错误!请输入1~12之间数字": Exit SubxMouth = Range("F3").ValueIf xMouth > 12 Then MsgBox "月份错误!请输入1~12之间数字": Exit SubDim xR As Range, r As Range Dim xArr, ir As Long, ic As Long, i As Long, eir As Long xArr = s.Range("A2").CurrentRegionir = UBound(xArr, 1)ic = 2For i = LBound(xArr, 1) + 1 To ir    If VBA.IsDate(xArr(i, 1)) Then        If xMouth = VBA.DatePart("m", xArr(i, 1)) Then                    If VBA.DatePart("d", xArr(i, 1)) <= 26 Then                        If VBA.UCase(xArr(i, 2)) = xName Then                            xCountA = xCountA + VBA.CDbl(xArr(i, 3))                            xCountB = xCountB + VBA.CDbl(xArr(i, 4))                            AddCells xArr, s, i                        End If                    End If        ElseIf xMouth - 1 = VBA.DatePart("m", xArr(i, 1)) Then                    If VBA.DatePart("d", xArr(i, 1)) > 26 Then                        If VBA.UCase(xArr(i, 2)) = xName Then                            xCountA = xCountA + VBA.CDbl(xArr(i, 3))                            xCountB = xCountB + VBA.CDbl(xArr(i, 4))                            AddCells xArr, s, i                        End If                    End If        End If    End IfNext i    eir = s.Range("G" & s.Rows.Count).End(xlUp).Row    eir = eir + 1    If eir > 2 Then        s.Range("G" & eir).Value = "合计"        s.Range("H" & eir).Value = xName        s.Range("I" & eir).Value = xCountA        s.Range("J" & eir).Value = xCountB    End If    With s.Range("G3:J" & eir)        .Borders.LineStyle = 1        .HorizontalAlignment = xlCenter        .VerticalAlignment = xlCenter        .RowHeight = 20    End WithErase xArrSet s = NothingEnd Sub

月度汇总

Sub 月度汇总()On Error Resume NextDim xCountA As Double, xCountB As Double, xMouth As IntegerDim s As Worksheet, c As Worksheet, j As Worksheet, jr As LongSet s = ThisWorkbook.Worksheets("设置")Set c = ThisWorkbook.Worksheets("产量统计表")Set j = ActiveSheetj.Cells(3, 1).Resize(j.UsedRange.Rows.Count - 2, 4).DeleteIf Not VBA.IsNumeric(s.Range("E1").Value) Then Exit SubxMouth = Range("E1").ValueDim xArr, xi As Long, ir As Long, ic As LongxArr = c.Range("A2").CurrentRegionir = UBound(xArr, 1)ic = 2Dim sArr, si As Long, sr As Longsr = s.Cells(1, 1).End(xlDown).RowsArr = s.Range("A2:A" & sr)sr = UBound(sArr, 1)For si = LBound(sArr, 1) To sr                                        xCountA = 0                                        xCountB = 0    For xi = LBound(xArr, 1) To ir        If VBA.UCase(xArr(xi, ic)) = VBA.UCase(sArr(si, 1)) Then        '如果姓名相同                 If VBA.IsDate(xArr(xi, 1)) Then                     If xMouth = VBA.DatePart("m", xArr(xi, 1)) Then                                If VBA.DatePart("d", xArr(xi, 1)) <= 26 Then                                        xCountA = xCountA + VBA.CDbl(xArr(xi, 3))                                        xCountB = xCountB + VBA.CDbl(xArr(xi, 4))                                End If                    ElseIf xMouth - 1 = VBA.DatePart("m", xArr(xi, 1)) Then                               If VBA.DatePart("d", xArr(xi, 1)) > 26 Then                                        xCountA = xCountA + VBA.CDbl(xArr(xi, 3))                                        xCountB = xCountB + VBA.CDbl(xArr(xi, 4))                                End If                    End If                End If        End If    Next xi    jr = j.Cells(j.Rows.Count, 1).End(xlUp).Row + 1    j.Cells(jr, 1).Value = "=row()-2"    j.Cells(jr, 2).Value = sArr(si, 1)    j.Cells(jr, 3).Value = xCountA    j.Cells(jr, 4).Value = xCountB    With j.Cells(jr, 1).Resize(1, 4)        .RowHeight = 18        .Borders.LineStyle = 1        .HorizontalAlignment = xlCenter        .VerticalAlignment = xlCenter    End WithNext sij.Range("A1").Value = xMouth & "月度汇总表"Erase xArrSet j = NothingSet s = NothingSet c = NothingEnd Sub

产量统计也是一个重要的环节,特别是一些中小型企业,生产密集型企业更是需要一个高效的统计表来进行结算。

如有需要可以查看产量统计表,Excel vba

欢迎关注、收藏

---END---

相关参考