標題:
[發問]
如何把資料轉寫到對應的工作表
[打印本頁]
作者:
man65boy
時間:
2017-10-15 21:23
標題:
如何把資料轉寫到對應的工作表
請教各位老師們,要如何把I欄分類中的資料A~J欄整列的資料轉寫到對應的工作表中,懇求老師們的幫忙。
附檔:[attach]27809[/attach]
作者:
Hsieh
時間:
2017-10-16 09:38
回復
1#
man65boy
Private Sub CommandButton1_Click()
Dim ar()
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
For Each sh In Sheets
d1(sh.Name) = ""
Next
For Each a In Range(Range("I2"), Range("I65536").End(xlUp))
If d1.exists(a.Value) Then
If IsEmpty(d(a.Value)) Then
ReDim ar(0)
ar(0) = a.Offset(, -8).Resize(, 10).Value
d(a.Value) = ar
Else
ar = d(a.Value)
i = UBound(ar) + 1
ReDim Preserve ar(i)
ar(i) = a.Offset(, -8).Resize(, 10).Value
d(a.Value) = ar
End If
End If
Next
For Each ky In d.keys
k = UBound(d(ky)) + 1
Sheets(ky).[A2].Resize(k, 10) = Application.Transpose(Application.Transpose(d(ky)))
Next
End Sub
複製代碼
作者:
man65boy
時間:
2017-10-16 11:51
回復
2#
Hsieh
謝謝Hsieh的回覆,小弟發問不夠明確,拍事,所以還要再修改,(依類別選後,在轉寫到對應的工作表後,不留轉寫後的資料在當前的工作表上。
PS:資料轉寫後,再依序排列,不留空白處。)詳細需求在每個工作表上有敘述,附檔[attach]27810[/attach]
謝謝老師的幫忙^^
作者:
Hsieh
時間:
2017-10-16 18:00
回復
3#
man65boy
Private Sub CommandButton1_Click()
Dim ar()
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
For Each sh In Sheets
d1(sh.Name) = ""
Next
r = Range("I65536").End(xlUp).Row '資料尾
For j = r To 2 Step -1
Set a = Cells(j, "I")
If d1.exists(a.Value) Then
If IsEmpty(d(a.Value)) Then
ReDim ar(0)
ar(0) = a.Offset(, -8).Resize(, 10).Value
d(a.Value) = ar
Else
ar = d(a.Value)
i = UBound(ar) + 1
ReDim Preserve ar(i)
ar(i) = a.Offset(, -8).Resize(, 10).Value
d(a.Value) = ar
End If
Rows(j).Delete '刪除資料列
End If
Next
For Each ky In d.keys
k = UBound(d(ky)) + 1
Sheets(ky).[A2].Resize(k, 10) = Application.Transpose(Application.Transpose(d(ky)))
Next
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
Private Sub CommandButton1_Click()
Dim ar()
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
For Each sh In Sheets
d1(sh.Name) = ""
Next
r = Range("I65536").End(xlUp).Row '資料尾
For j = r To 2 Step -1
Set a = Cells(j, "I")
If d1.exists(a.Value) Then
If IsEmpty(d(a.Value)) Then
ReDim ar(0)
ar(0) = a.Offset(, -8).Resize(, 10).Value
d(a.Value) = ar
Else
ar = d(a.Value)
i = UBound(ar) + 1
ReDim Preserve ar(i)
ar(i) = a.Offset(, -8).Resize(, 10).Value
d(a.Value) = ar
End If
Rows(j).Delete '刪除資料列
End If
Next
For Each ky In d.keys
For i = UBound(d(ky)) To 0 Step -1
Sheets(ky).[A65536].End(xlUp).Offset(1, 0).Resize(1, 10) = d(ky)(i)
Next
Next
End Sub
複製代碼
作者:
man65boy
時間:
2017-10-17 14:08
回復
7#
Hsieh
謝謝Hsieh 老師的幫忙解答,感激不盡!^^
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)