Board logo

標題: [發問] 篩選完後,分別放置不同工作表 [打印本頁]

作者: jj369963    時間: 2014-11-30 22:57     標題: 篩選完後,分別放置不同工作表

Dear 大大們:
小問題
1.想以class作為篩選,放置不同sheet
2.並以篩選的class做sheet命名
VBA新手,在煩請指導

[attach]19678[/attach]
作者: GBKEE    時間: 2014-12-1 10:45

本帖最後由 GBKEE 於 2014-12-1 10:51 編輯

回復 1# jj369963
  1. Option Explicit

  2. Sub Ex_字典物件()
  3.     Dim d As Object, i As Integer, k As Variant, Sh As Worksheet
  4.     Set d = CreateObject("scripting.dictionary") '字典物件
  5.     i = 2
  6.     With Sheet1
  7.         Do While .Cells(i, "c") <> ""
  8.             d(.Cells(i, "c") & "") = ""  '字典物件的 key : class欄的值
  9.             i = i + 1
  10.         Loop
  11.         For Each k In d   '字典物件的 key
  12.             .Range("a1").AutoFilter 3, k  '自動篩選 第3欄的準則為 k
  13.             On Error Resume Next
  14.             Set Sh = Sheets(k)        'k工作表不存在會有錯誤
  15.             If Err <> 0 Then
  16.                 Set Sh = Sheets.Add(, Sheets(1))
  17.                 Sh.Name = k
  18.                 Err.Clear
  19.                 On Error GoTo 0
  20.             End If
  21.             Sh.UsedRange.Clear
  22.            .UsedRange.Copy Sh.Range("A1")
  23.         Next
  24.         .Activate
  25.         .Range("a1").AutoFilter
  26.     End With
  27. End Sub
  28. Sub Ex_進階篩選()
  29.     Dim Rng  As Range, Sh As Worksheet
  30.     With Sheet1
  31.         '進階篩選出class欄不重複的值
  32.         .Range("C:C").AdvancedFilter xlFilterCopy, , Cells(1, .Columns.Count), True
  33.         
  34.         Set Rng = Cells(2, .Columns.Count)
  35.         Do While Rng <> ""
  36.             .Range("a1").AutoFilter 3, Rng  '自動篩選 第3欄的準則為 Rng
  37.             On Error Resume Next
  38.             Set Sh = Sheets(Rng.Text)        'Rng.Text 工作表不存在會有錯誤
  39.             If Err <> 0 Then
  40.                 Set Sh = Sheets.Add(, Sheets(1))
  41.                 Sh.Name = Rng.Text
  42.                 Err.Clear
  43.                 On Error GoTo 0
  44.             End If
  45.             Sh.UsedRange.Clear
  46.            .UsedRange.Copy Sh.Range("A1")
  47.             Set Rng = Rng.Offset(1)
  48.         Loop
  49.         .Activate
  50.         .Range("a1").AutoFilter
  51.         Rng.EntireColumn.Clear
  52.     End With
  53. End Sub
複製代碼





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