Board logo

標題: [發問] 如何把資料轉寫到對應的工作表 [打印本頁]

作者: man65boy    時間: 2017-10-15 21:23     標題: 如何把資料轉寫到對應的工作表

請教各位老師們,要如何把I欄分類中的資料A~J欄整列的資料轉寫到對應的工作表中,懇求老師們的幫忙。
附檔:[attach]27809[/attach]
作者: Hsieh    時間: 2017-10-16 09:38

回復 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
複製代碼

作者: man65boy    時間: 2017-10-16 11:51

回復 2# Hsieh
謝謝Hsieh的回覆,小弟發問不夠明確,拍事,所以還要再修改,(依類別選後,在轉寫到對應的工作表後,不留轉寫後的資料在當前的工作表上。
PS:資料轉寫後,再依序排列,不留空白處。)詳細需求在每個工作表上有敘述,附檔[attach]27810[/attach]

    謝謝老師的幫忙^^
作者: Hsieh    時間: 2017-10-16 18:00

回復 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
複製代碼

作者: man65boy    時間: 2017-10-16 18:46

回復 4# Hsieh
謝謝老師的回答,在總表的問題轉寫沒問題,但是在把總表的資料轉出到其他工作表時,會出現覆蓋,沒依序往下排列,簡單來說,總表轉寫出去後,會在不定時的作業,再轉寫出去,所以資料到其他工作表上,不能有覆蓋的動作,只能依排列方式往下,再麻煩老師了^^
作者: man65boy    時間: 2017-10-17 10:50

回復 4# Hsieh
小弟之前有發問過一個問題,就是在這工作表上的功能性在沿升,多了把選擇的類別,轉到指定的工作表上依序排列,附上之前發問的檔案參考:[attach]27811[/attach]
作者: Hsieh    時間: 2017-10-17 11:22

回復 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
複製代碼

作者: man65boy    時間: 2017-10-17 14:08

回復 7# Hsieh

謝謝Hsieh 老師的幫忙解答,感激不盡!^^




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