返回列表 上一主題 發帖

[發問] 如何利用表單作出貨表

[發問] 如何利用表單作出貨表

請教各位前輩,如何利用表單作出貨表,感恩.
出貨統計.jpg

出貨統計.rar (8.48 KB)

杜小平

隨意窩 "EXCEL迷"  blog  或 http://blog.xuite.net/hcm19522/twblog[img][/img]
已收集7000篇 EXCEL函數

TOP

  1. Sub zz()
  2. Dim a, Title, b(), c&, n&, k&, r&, t&
  3. Title = [b2:f2].Value
  4. c = UBound(Title, 2)
  5. a = [b2].CurrentRegion.Value
  6. t = UBound(a, 2) / c - 1
  7. ReDim b(1 To UBound(a) * (t + 1), 1 To c + 1)
  8. For n = 0 To t
  9.     k = n * c + c
  10.     For i = 2 To UBound(a)
  11.         If a(i, k) Then
  12.             r = r + 1
  13.             For j = 1 To c
  14.                 b(r, j) = a(i, k - c + j)
  15.             Next
  16.             b(r, c + 1) = b(r, 4) * b(r, 5)
  17.         End If
  18.     Next
  19. Next
  20. Workbooks.Add 1
  21. [a1].Resize(1, c) = Title
  22. Cells(1, c + 1) = "Amount"
  23. [a2].Resize(r, c + 1) = b
  24. [a1].CurrentRegion.Borders.Value = 1
  25. End Sub
複製代碼

TOP

回復 3# ikboy 感謝ikboy,程式可用其他自行修飾,因功力不足,是否能將程式功能註解,讓小弟學習.
杜小平

TOP

回復 4# dou10801
  1. Sub zz()
  2. Dim a, Title, b(), c&, n&, k&, r&, t&
  3. Title = [b2:f2].Value   '取標題
  4. c = UBound(Title, 2)    '取標題長度
  5. a = [b2].CurrentRegion.Value '取表1的資料放入 a Array
  6. t = UBound(a, 2) / c - 1    '計算表1中標題的重複次數 以 0 開始至 t, 為以下第一循環作好計算 ,請看 @_@
  7. ReDim b(1 To UBound(a) * (t + 1), 1 To c + 1)   '建立一個較大的 b Array
  8. For n = 0 To t  '@_@
  9.     k = n * c + c   '計算 k 的值, 即出貨數量在Title中的位置
  10.     For i = 2 To UBound(a)  '由 a 的第2行循環
  11.         If a(i, k) Then '行列對應有出貨數量, 進行以下程序
  12.             r = r + 1   '建立新行數給 b Array
  13.             For j = 1 To c  '循環標題長度
  14.                 b(r, j) = a(i, k - c + j)   '取 a Array 中相對行列的資料給 b Array
  15.             Next            '循環
  16.             b(r, c + 1) = b(r, 4) * b(r, 5) '計算金額
  17.         End If
  18.     Next    '循環
  19. Next    '循環
  20. Workbooks.Add 1 '新建工作簿
  21. [a1].Resize(1, c) = Title   '寫入標題
  22. Cells(1, c + 1) = "Amount" '寫入新標題
  23. [a2].Resize(r, c + 1) = b   '將 b Array 寫入
  24. [a1].CurrentRegion.Borders.Value = 1    '畫上格線
  25. End Sub
複製代碼

TOP

回復 5# ikboy ikboy大大,感恩.
杜小平

TOP

        靜思自在 : 生氣,就是拿別人的過錯來懲罰自己。
返回列表 上一主題