返回列表 上一主題 發帖

[發問] 如何把資料轉寫到對應的工作表

回復 1# man65boy
  1. Private Sub CommandButton1_Click()
  2. Dim ar()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")

  5. For Each sh In Sheets
  6.   d1(sh.Name) = ""
  7. Next
  8. For Each a In Range(Range("I2"), Range("I65536").End(xlUp))
  9. If d1.exists(a.Value) Then
  10. If IsEmpty(d(a.Value)) Then
  11.    ReDim ar(0)
  12.    ar(0) = a.Offset(, -8).Resize(, 10).Value
  13.    d(a.Value) = ar
  14.    Else
  15.      ar = d(a.Value)
  16.      i = UBound(ar) + 1
  17.      ReDim Preserve ar(i)
  18.      ar(i) = a.Offset(, -8).Resize(, 10).Value
  19.      d(a.Value) = ar
  20. End If
  21. End If
  22. Next
  23. For Each ky In d.keys
  24. k = UBound(d(ky)) + 1
  25.   Sheets(ky).[A2].Resize(k, 10) = Application.Transpose(Application.Transpose(d(ky)))
  26. Next
  27. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 3# man65boy
  1. Private Sub CommandButton1_Click()
  2. Dim ar()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")

  5. For Each sh In Sheets
  6.   d1(sh.Name) = ""
  7. Next
  8. r = Range("I65536").End(xlUp).Row '資料尾
  9. For j = r To 2 Step -1
  10. Set a = Cells(j, "I")
  11. If d1.exists(a.Value) Then
  12. If IsEmpty(d(a.Value)) Then
  13.    ReDim ar(0)
  14.    ar(0) = a.Offset(, -8).Resize(, 10).Value
  15.    d(a.Value) = ar
  16.    Else
  17.      ar = d(a.Value)
  18.      i = UBound(ar) + 1
  19.      ReDim Preserve ar(i)
  20.      ar(i) = a.Offset(, -8).Resize(, 10).Value
  21.      d(a.Value) = ar
  22. End If
  23. Rows(j).Delete '刪除資料列
  24. End If
  25. Next
  26. For Each ky In d.keys
  27. k = UBound(d(ky)) + 1
  28.   Sheets(ky).[A2].Resize(k, 10) = Application.Transpose(Application.Transpose(d(ky)))
  29. Next
  30. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 6# man65boy
  1. Private Sub CommandButton1_Click()
  2. Dim ar()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")

  5. For Each sh In Sheets
  6.   d1(sh.Name) = ""
  7. Next
  8. r = Range("I65536").End(xlUp).Row '資料尾
  9. For j = r To 2 Step -1
  10. Set a = Cells(j, "I")
  11. If d1.exists(a.Value) Then
  12. If IsEmpty(d(a.Value)) Then
  13.    ReDim ar(0)
  14.    ar(0) = a.Offset(, -8).Resize(, 10).Value
  15.    d(a.Value) = ar
  16.    Else
  17.      ar = d(a.Value)
  18.      i = UBound(ar) + 1
  19.      ReDim Preserve ar(i)
  20.      ar(i) = a.Offset(, -8).Resize(, 10).Value
  21.      d(a.Value) = ar
  22. End If
  23. Rows(j).Delete '刪除資料列
  24. End If
  25. Next
  26. For Each ky In d.keys
  27. For i = UBound(d(ky)) To 0 Step -1
  28.   Sheets(ky).[A65536].End(xlUp).Offset(1, 0).Resize(1, 10) = d(ky)(i)
  29. Next
  30. Next
  31. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 並非有錢魷是快樂,問心無愧心最安。
返回列表 上一主題