返回列表 上一主題 發帖

[發問] 如何用VBA將SHEET1內相同的資料合併計算後複製到SHEET2

回復 1# bear0925900003
物件有指明父層 程式碼可任意擺
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, i As Integer, A
  4.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  5.     With Sheets("SHEET1")                                         ''工作表物件
  6.         i = 1
  7.         Do While .Cells(i, "A") <> ""                               '工作表.物件  加. 為此物件的 子物件,方法,屬性
  8.              'Do While .Range("A" & i) <> ""    '也可以用 Range
  9.             D(.Cells(i, "A").Value) = D(.Cells(i, "A").Value) + .Cells(i, "B")
  10.             i = i + 1
  11.         Loop
  12.     End With
  13.     If i > 1 Then
  14.         With Sheets("SHEET2")
  15.             .[A1].Resize(D.Count) = Application.Transpose(D.KEYS)
  16.             .[B1].Resize(D.Count) = Application.Transpose(D.ITEMS)
  17.         End With
  18.     End If
  19. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# bear0925900003
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, i As Integer
  4.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  5.     With Sheets("SHEET1")                                         ''工作表物件
  6.         i = 1
  7.         Do While .Cells(i, "A") <> ""                               '工作表.物件  加. 為此物件的 子物件,方法,屬性
  8.              'Do While .Range("A" & i) <> ""    '也可以用 Range
  9.             D(.Cells(i, "A").Value) = D(.Cells(i, "A").Value) + .Cells(i, "B")
  10.             i = i + 1
  11.         Loop
  12.     End With
  13.     With Sheets("SHEET2")                                         ''工作表物件
  14.         i = 1
  15.         Do While .Cells(i, "A") <> ""                               '工作表.物件  加. 為此物件的 子物件,方法,屬性
  16.              'Do While .Range("A" & i) <> ""    '也可以用 Range
  17.             D(.Cells(i, "A").Value) = D(.Cells(i, "A").Value) + .Cells(i, "B")
  18.             i = i + 1
  19.         Loop
  20.     End With
  21.     If D.Count > 1 Then
  22.         With Sheets("SHEET3")
  23.             .[A1].Resize(D.Count) = Application.Transpose(D.KEYS)
  24.             .[B1].Resize(D.Count) = Application.Transpose(D.ITEMS)
  25.         End With
  26.     End If
  27. End Sub
複製代碼
  1. Sub Ex_a()
  2.     Dim D As Object, i As Integer, e As Variant
  3.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  4.     For Each e In Array(Sheets("SHEET1"), Sheets("SHEET2"), Sheets("SHEET3"))
  5.         With e
  6.             i = 1
  7.             Do While .Cells(i, "A") <> ""                              '工作表.物件  加. 為此物件的 子物件,方法,屬性
  8.                  'Do While .Range("A" & i) <> ""    '也可以用 Range
  9.                 D(.Cells(i, "A").Value) = D(.Cells(i, "A").Value) + .Cells(i, "B")
  10.                 i = i + 1
  11.             Loop
  12.         End With
  13.     Next
  14.    If D.Count > 1 Then
  15.         With Sheets("SHEET4")
  16.             .[A1].Resize(D.Count) = Application.Transpose(D.KEYS)
  17.             .[B1].Resize(D.Count) = Application.Transpose(D.ITEMS)
  18.         End With
  19.     End If
  20. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# bear0925900003
用資料->合併彙算的指令 試試看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題