前景提要(文末提供源碼下載)
之前我們介紹了如何通過RemoveDuplicates的方法來實現快速去重並提取唯一值的,RemoveDuplicates方法不僅僅能夠實現針對某一列的去重,同時還可以實現2列的數據去重,但是有時候可能我們並不僅僅是針對1列,2列這麼簡單,我們需要針對多列同時進行去重並提取唯一值,多列?用欄位循環那嗎?好像是可以,但是應該不是最簡的方法,今天我們來在學習一個新方法
場景說明
這是我們今天模擬的這個工作表,我們需要在這三列中提取唯一值並組成新的工作表,如果說手工操作的話,應該是每列不斷的篩選才能夠實現的,數據操作的過程中也會存在不少的問題,比方說數據操作了篩選,你不知道複製的結果應該如何安放了。
代碼區
好了,說了那麼多的廢話,我們請出今天的主角吧
AdvancedFilter
Sub test()
ActiveSheet.UsedRange.AdvancedFilter _
Action:=xlFilterCopy, Unique:=True, _
CopyToRange:=ActiveSheet.Range("H1")
End Sub
excuse me!這麼短!是的,你沒錯,雖然代碼很短,但是功能和學問還是很大的,來看看效果
不管你有幾行,這個代碼都可以輕鬆的實現
代碼解析
其實今天的代碼很簡單,我們只需要了解AdvancedFilter這個方法的實用就好了。 我們先來看看官方給出來的這個方法的用法
AdvancedFilter( Action , CriteriaRange , CopyToRange , Unique )
這裡我們對照著用法就可以理解了,首先第一個action,代表了你的操作是要在原數據的基礎上修改,還是在不破壞原數據的基礎上,在其他地方展示
Action:=xlFilterCopy
而在我們的代碼中,我們是選擇了copy方法,類似於之前學習的RemoveDuplicates方法,不過RemoveDuplicates本身就會破壞原始數據,我們只能講原始數據複製之後再進行操作,而這裡AdvancedFilter就更加人人性化了,可以給我們選擇的方法
既然我們是複製數據的,那麼肯定要有一個複製的區域,這就是CopyToRange 方法的運用了,從單純的字面意思上來說,都能夠知道,它是需要我們提供粘貼的單元格區域。
留意截圖圈中的地方,這裡都是重點,只有是action=xlFilterCopy的時候,我們才需要使用CopyToRange,否則是在元數據修改,並不需要任何的數據支撐。
================================
本節課的案例源碼已經上傳,需要的小夥伴請按照如下步驟操作
1.點我頭像加個關注~
2.轉發下本文章(算是對我的小小支持吧~)
3.後台私信「8-3」
希望大家多支持~~,多多關注 ~ ~
好了,明晚19:00,準時再見!