Board logo

標題: [發問] 請問各位大大 如何 合併報表 總和統計 [打印本頁]

作者: owen9399    時間: 2015-11-15 15:01     標題: 請問各位大大 如何 合併報表 總和統計

本帖最後由 GBKEE 於 2015-11-16 07:36 編輯

請問各位大大    如何 合併報表 總和統計

手寫日報表 與 電腦日報表 與 進貨表 都是 用 手動輸入的方式 填入
而 總和統計表 是 將  手寫日報表 與 電腦日報表 與 進貨表 的數值 做 全部的加總

依 序號 由小到大排列 , 呈現一份報表
謝謝指導
作者: 准提部林    時間: 2015-11-15 18:47

Sub TEST()
Dim j&, Jm&, Arr, Brr, xS As Worksheet, xD, N&
Sheets("總和統計表").UsedRange.Offset(1, 0).ClearContents
 
ReDim Brr(1 To 6000, 1 To 8) '_陣列預設容納 6000 列,可自行調整
Set xD = CreateObject("Scripting.Dictionary")
 
For Each xS In Sheets(Array("手寫日報表", "電腦日報表", "進貨表"))
  Arr = xS.UsedRange.Offset(1, 0).Value
  For j = 1 To UBound(Arr)
    Jm = xD(Arr(j, 1)):   If Arr(j, 1) = "" Then GoTo 99
    If Jm = 0 Then N = N + 1: xD(Arr(j, 1)) = N: Jm = N
    Brr(Jm, 1) = Arr(j, 1):    Brr(Jm, 2) = Arr(j, 2)
    If xS.Name = "進貨表" Then
      Brr(Jm, 5) = Brr(Jm, 5) + Arr(j, 4) + Arr(j, 5) '_總進貨
      If InStr(" " & Brr(Jm, 6) & " ", " " & Arr(j, 6) & " ") = 0 Then  '_排除重覆
        Brr(Jm, 6) = Trim(Brr(Jm, 6) & " " & Arr(j, 6)) '_紀念品
      End If
      Brr(Jm, 8) = Trim(Brr(Jm, 8) & " " & Arr(j, 7)) '_備註
    Else
      Brr(Jm, 3) = Brr(Jm, 3) + Arr(j, 4) '_總張數
      Brr(Jm, 4) = Brr(Jm, 4) + Arr(j, 5) '_總股數
      Brr(Jm, 8) = Trim(Brr(Jm, 8) & " " & Arr(j, 6)) '_備註
    End If
    Brr(Jm, 7) = Brr(Jm, 5) - Brr(Jm, 3) '_總進貨-總張數
99: Next
Next
 
If N = 0 Then Exit Sub
With [總和統計表!A2:H2].Resize(N)
   .Value = Brr
   .Sort Key1:=.Item(1), Order1:=xlAscending, Header:=xlNo
End With
End Sub

程式碼看起來很多, 其實都只是[參照位置]而已, 請自行去慢慢意會, 不多做說明了~~
作者: owen9399    時間: 2015-11-16 10:35

感謝大大 的指導




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)