標題:
[發問]
抓取篩選後儲存格內容至對應的工作表
[打印本頁]
作者:
Michelle-W
時間:
2016-7-14 15:42
標題:
抓取篩選後儲存格內容至對應的工作表
各位好!~
我之前有請教過自動抓取後面有標註的方法,但那時候資料比較少
現在資料變多了
目前有7位人員(B1:H1),我都用相同的程式碼複製再複製
但後續還會增加人員(假設B1:K1),我得再次修改程式碼
請問有沒有什麼樣的寫法,可以自動抓取(B1:K1)到對應的工作表內
(因為後續還有各個月份需要新增上去QQ,人員隨時會增加,而專屬的工作表資料是累加的)
再次感謝 :)
[attach]24667[/attach]的)
作者:
c_c_lai
時間:
2016-7-14 19:15
回復
1#
Michelle-W
試試看!
Sub Ex()
Dim lg As Variant, ctn As Variant, xi As Integer
Dim dic As Object, sp As Variant, sh As Worksheet
Set sh = Worksheets("05月")
Set dic = CreateObject("scripting.dictionary")
With sh
For Each lg In .Range("B1:I1")
.Select
dic(lg.Value) = ""
For Each ctn In .Range("A2:A7")
If ctn.Offset(, lg.Column - 1) = "V" Then
dic(lg.Value) = dic(lg.Value) + IIf(dic(lg.Value) = "", "", ",") + ctn.Value
End If
Next
sp = Split(dic(lg.Value), ",")
' Cells(15, lg.Column).Resize(UBound(sp) + 1) = Application.Transpose(Array(sp)) ' 展示用
For xi = 1 To Worksheets.Count
If Worksheets(xi).Name = lg.Value Then Worksheets(xi).Select: Exit For
Next xi
If xi > Worksheets.Count Then
Sheets.Add After:=Sheets(Worksheets.Count)
ActiveSheet.Name = lg.Value
End If
With Worksheets(lg.Value)
.[A1] = sh.[A1]
.[B1] = lg.Value
.[A2].Resize(UBound(sp) + 1) = Application.Transpose(Array(sp))
.[B2].Resize(UBound(sp) + 1) = "V"
End With
Next
End With
End Sub
複製代碼
作者:
Michelle-W
時間:
2016-7-14 21:01
回復
2#
c_c_lai
會出現1004的錯誤QQ
[attach]24668[/attach][attach]24668[/attach]
偵錯反黃的是這句
ActiveSheet.Name = lg.Value
這組程式碼太複雜了,我還看不懂>"<
在麻煩您幫忙看看
再次再次的感謝
作者:
Kubi
時間:
2016-7-15 13:51
回復
1#
Michelle-W
請參考。
[attach]24669[/attach]
作者:
Michelle-W
時間:
2016-7-15 16:31
回復
4#
Kubi
非常感謝您的指點~~
還想請教一下...
若是假設B欄只是要記錄時間
(沒有專屬工作表,但要連同資料一起貼到專屬的工作表裡面的話)
以這組程式碼有辦法做更改嗎?
再次感謝 :)
[attach]24670[/attach]
作者:
c_c_lai
時間:
2016-7-15 18:15
回復
3#
Michelle-W
[attach]24671[/attach]
[attach]24672[/attach]
作者:
Kubi
時間:
2016-7-15 20:11
回復
5#
Michelle-W
請測試
[attach]24673[/attach]
作者:
Michelle-W
時間:
2016-7-18 16:25
回復
6#
c_c_lai
謝謝您的指導~ ^^
這組程式碼我看得比較吃力,比較難...
您有特別註明只針對5月份的資料
請問如果同時有5月與6月的資料要新增進去專屬工作表內,
就無法使用或修改這組程式碼的寫法對嗎??
我自己亂改,資料都會被覆蓋,只顯示6月的資料 QQ
如果可以的話,再麻煩您指點一下
感謝><"
作者:
c_c_lai
時間:
2016-7-18 20:33
回復
8#
Michelle-W
請參考!
[attach]24686[/attach]
[attach]24687[/attach]
[attach]24688[/attach]
[attach]24689[/attach]
[attach]24690[/attach]
作者:
c_c_lai
時間:
2016-7-18 20:36
回復
8#
Michelle-W
Sub 各自分類()
Dim lg As Variant, ctn As Variant, xi As Boolean
Dim dic As Object, sp As Variant
Dim sh As Worksheet, wks As Worksheet
Set sh = Worksheets("選單")
Set dic = CreateObject("scripting.dictionary")
With sh
For Each lg In .Range("C1", .Range("C1").End(xlToRight))
.Select
dic(lg.Value) = ""
For Each ctn In .Range("A2", Range("A2").End(xlDown))
If ctn.Offset(, lg.Column - 1) = "V" Then
dic(lg.Value) = dic(lg.Value) + IIf(dic(lg.Value) = "", "", ",") + ctn.Value
End If
Next
If dic(lg.Value) <> "" Then
sp = Split(dic(lg.Value), ",")
Cells(15, lg.Column).Resize(UBound(sp) + 1) = Application.Transpose(Array(sp)) ' 展示用
xi = tblExist(lg.Value) ' 判斷表單是否存在
If xi = False Then
Sheets.Add After:=Sheets(Worksheets.Count)
ActiveSheet.Name = lg.Value
End If
With Worksheets(lg.Value)
.Cells.Clear
.[A1] = sh.[A1]
.[B1] = lg.Value
.[A2].Resize(UBound(sp) + 1) = Application.Transpose(Array(sp))
.[B2].Resize(UBound(sp) + 1) = "V"
End With
End If
Next
End With
End Sub
Sub 新增選單()
Dim rng As Range, rng2 As Range
刪除工作表
With Worksheets("選單")
.Cells.Clear
Set rng = Sheets("總表").Range("A2", Sheets("總表").[A2].End(xlDown))
.[C1].Resize(, rng.Count - 1) = Application.Transpose(rng)
Set rng = Sheets("總表").Range("A16", Sheets("總表").[B16].End(xlDown))
rng.Copy .[A1]
End With
End Sub
Function tblExist(tblName As String) As Boolean
Dim xi As Integer
tblExist = False
For xi = 1 To Worksheets.Count
If Worksheets(xi).Name = tblName Then tblExist = True: Exit Function
Next xi
End Function
Sub 刪除工作表()
Dim xi As Integer
Application.DisplayAlerts = False
For xi = Worksheets.Count To 2 Step -1
If Worksheets(xi).Name <> "總表" And Worksheets(xi).Name <> "選單" Then
Worksheets(xi).Delete
End If
Next xi
Application.DisplayAlerts = True
End Sub
Sub 刪除各分頁()
刪除工作表
With Worksheets("選單")
.Range("C2:" & Chr(64 + .[C1].End(xlToRight).Column) & 65535).Clear
End With
End Sub
複製代碼
作者:
c_c_lai
時間:
2016-7-19 07:41
回復
8#
Michelle-W
我有點好奇你想像之整體作業的流程實際是如何進行的?
如果同時有5月與6月的資料要新增進去專屬工作表內,
又是怎說?
作者:
Michelle-W
時間:
2016-7-19 10:24
本帖最後由 Michelle-W 於 2016-7-19 10:25 編輯
回復
11#
c_c_lai
資料修正如附件 v v"
[attach]24693[/attach]
作者:
c_c_lai
時間:
2016-7-19 10:56
回復
12#
Michelle-W
[attach]24694[/attach]
作者:
Michelle-W
時間:
2016-7-19 11:18
回復
13#
c_c_lai
對的! 都是各耗用的時間
感恩
作者:
c_c_lai
時間:
2016-7-19 13:05
本帖最後由 c_c_lai 於 2016-7-19 13:12 編輯
回復
14#
Michelle-W
是不是這樣?
[attach]24696[/attach]
[attach]24697[/attach]
作者:
Michelle-W
時間:
2016-7-19 17:02
回復
7#
Kubi
謝謝您提供的方法
初學者容易懂~
非常感謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)