Board logo

標題: [發問] excel vba資料加總的寫法 [打印本頁]

作者: smartpearl    時間: 2013-1-30 22:15     標題: excel vba資料加總的寫法

想請教大家

現在有一份資料
要如何利用 vba來計算出想要的結果(不是用excel喔~)

原始資料集資料結果如附件!!
目前只想到用sumif,可是蘭嶼列都要各自加總一次...
迴圈的話也不知道要如何下手

煩請幫幫忙
作者: Hsieh    時間: 2013-1-31 09:48

本帖最後由 Hsieh 於 2013-2-1 00:45 編輯

回復 1# smartpearl
資料只有2種Item嗎?
  1. Sub ex()
  2. Dim Ay(2), MyID%, Ary(2)
  3. Set d = CreateObject("Scripting.Dictionary")
  4. ar = Range("A1").CurrentRegion  '將表格寫入陣列
  5. i = 2 '第2列開始
  6. Do
  7.    j = 4 '第4欄開始
  8.    Do
  9.      MyID = IIf(ar(i, 2) = "Add", 0, 1)  '第2欄如果是Add就用0否則用1作為陣列索引
  10.      Ay(MyID) = Ay(MyID) + ar(i, j)  '將陣列值相加
  11.    j = j + 1  '欄位加1
  12.    Loop Until j > UBound(ar, 2) Or TypeName(Cells(1, j).Value) = "String"  '直到欄位大過表格欄位或是第一列的值是字串(避免第2次執行會計算到原本新增的統計位置)
  13.    Cells(i, j).Resize(, 2) = Ay '資料列的後面欄位加入加總值
  14. Erase Ay
  15. i = i + 1  '列數加1
  16. Loop Until i > UBound(ar, 1) Or Cells(i, 1) = ""   '直到列數大過表格列數或第1欄為空白
  17. Cells(i, j) = "=SUM(R2C:R[-1]C)": Cells(i + 1, j + 1) = "=SUM(R2C:R[-1]C)"  '表格右下方寫入公式
  18. Cells(1, j).Resize(, 2) = Array("Count_Add", "Count_None")  '寫入標題
  19. j = 4
  20. Do
  21.    i = 2
  22.    Do
  23.      d(ar(i, 2)) = ar(i, j) + d(ar(i, 2))  '以第2欄內容為字典索引,分別計算個索引加總
  24.    i = i + 1
  25.    Loop Until i > UBound(ar, 1) Or Cells(i, 1) = ""  '直到列數大過表格列數或第1欄為空白
  26.    For Each ky In d.keys  '取出每個字典索引
  27.      Ay(s) = d(ky)  
  28.      s = s + 1
  29.    Next
  30.    Cells(i, j).Resize(3, 1) = Application.Transpose(Ay)  '表格下方寫入加總資料
  31.    Erase Ay: s = 0: d.RemoveAll  '清除陣列與字典內容
  32. j = j + 1  '欄數加1
  33. Loop Until j > UBound(ar, 2) Or TypeName(Cells(1, j).Value) = "String"  '直到欄位大過表格欄位或是第一列的值是字串(避免第2次執行會計算到原本新增的統計位置)
  34. Cells(i + 2, 4).Resize(, Range("A1").CurrentRegion.Columns.Count - 3) = "=R[-1]C-R[-2]C"    '寫入加總值差額公式
  35. Cells(i, 3) = "Sub_Add": Cells(i + 1, 3) = "Sub_None": Cells(i + 2, 3) = "Total"  '寫入標題
  36. End Sub
複製代碼

作者: smartpearl    時間: 2013-1-31 14:56

抱歉,可否稍微講解!!!
作者: smartpearl    時間: 2013-2-2 14:56

謝謝您
我再試著寫一遍~




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