LV超3A名牌購物網

EXCEL VBA.依〔篩選條件〕將資料複製至〔指定工作表〕
                         <.准提部林.>
---------------------------------
範例檔簡介:
程式碼:
 Sub 刷新()
 Dim MySht As Worksheet, dSht As Worksheet, y&
 Set MySht = Sheets("Sheet2")
 Set dSht = Sheets("Sheet1")
 MySht.Rows("2:65536").Clear 
 '清除原有資料  
 dSht.AutoFilterMode = False
 '解除篩選模式  
 y = dSht.Range("B65536").End(xlUp).Row
 If y < 2 Then MsgBox "※來源表〔B欄〕無資料! ", 0 + 16: Exit Sub
 '↑先解除篩選,再檢測資料尾列列號,若篩選中,檢測列號會有誤差  
 If WorksheetFunction.CountIf(dSht.Range("C2:C" & y), "~*") = 0 Then
   MsgBox "※來源表〔C欄〕無〔*星號〕篩選值! ", 0 + 16: Exit Sub
 End If
 '↑檢測〔*星號〕數  
 '注意:"~*"才能單選〔*〕,否則其它文字(例如:A.B.C)也會篩選進來  
 With dSht
   .Range("A1:C" & y).AutoFilter Field:=3, Criteria1:="~*"
   .Range("A2:C" & y).Copy MySht.[A2]
   .ShowAllData
 End With
 '↑以〔*星號〕篩選,複製資料,恢復全表  
 y = MySht.[B65536].End(xlUp).Row
 MySht.Range("A2:A" & y).Formula = "=ROW(A1)"
 '↑填入〔序號〕公式  
 Beep
 End Sub

 

說明1:
 複製〔篩選資料〕,不須考慮其篩選的首筆資料是否在第一列,
 也不須考慮其篩選的尾筆資料是否在最後一列,
 使用〔全域範圍〕複製,其隱藏列並不會被貼出來,
 若有必要,連〔標題列〕也可包含進來,但貼上位置須改為A1。
 注意:如果使用〔手動〕的〔複製.貼上〕,當第一次貼上時,
    若有做〔復原〕動作,後再繼續貼上,則會是貼出〔全域資料〕。
    解決方法:重新在篩選範圍執行一次〔複製〕。
 
說明2:
 在〔範例檔2〕中附加了〔東邪.大師〕的進階程式用法,
 此用法在高階的 VBA 中,其應用度非常廣泛,
 可惜個人尚無法完全了解其機制,而無法為大家解析。
 以此題需求,雖尚用不到此高階語法,但若能學到亦是好事!
 註:該程式碼只是提供一個架構,請自行去參解大師的語法。
 感謝!
---------------------------------
<範例檔1>:
<範例檔2>:
LV超3A名牌購物網

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 方志遠 的頭像
    方志遠

    Lv,Gucci,Lv包包,Lv錢夾,Lv手錶,Lv目錄,Gucci公仔包,Lv購物包,Lv水桶包,Lv批發,愛美仕名牌購物

    方志遠 發表在 痞客邦 留言(0) 人氣()