數(shù)據(jù)篩選在Excel中應(yīng)用是一個(gè)很方便的操作,如果應(yīng)用得當(dāng)將會(huì)在很大程度上提高對(duì)數(shù)據(jù)的查詢(xún)過(guò)程。
本文將提供一個(gè)對(duì)象的介紹,來(lái)具體應(yīng)用一下,數(shù)據(jù)篩選的操作方法。
如下圖所示,對(duì)于數(shù)據(jù)表列進(jìn)行數(shù)據(jù)篩選,如在某一列中查找一些相關(guān)數(shù)據(jù),然后自動(dòng)列出查找到的內(nèi)容。
在此過(guò)程當(dāng)中,很多步驟都通過(guò)Excel自動(dòng)為我們進(jìn)行了,所以,知道一些對(duì)象的應(yīng)用就可以實(shí)現(xiàn)自動(dòng)搜索功能。
實(shí)現(xiàn)篩選的功能,由對(duì)象AutoFilter對(duì)象來(lái)進(jìn)行,此對(duì)象可返回一系列篩選后的數(shù)據(jù)內(nèi)容,如果想得到這個(gè)對(duì)象,我們還要學(xué)習(xí)一個(gè)更重要的對(duì)象Range,這個(gè)對(duì)象的AutoFilter方法可以進(jìn)行數(shù)據(jù)表的篩選,然后通過(guò)WorkSheet的AutoFilter屬性來(lái)返回對(duì)象。
上述表達(dá)真得實(shí)在太難以理解了,不是我要這么寫(xiě)得難理解,而是西方人的思維,本身就這么無(wú)法理解。
下面通過(guò)一些代碼來(lái),增加理解。
上圖為AutoFilter的方法和屬性,可以參考認(rèn)識(shí)一下。
代碼:
set Sobj=WorkSheet.AutoFilter
這句可以返回一個(gè)AutoFilter對(duì)象Sobj或者Nothing對(duì)象。
也就是說(shuō),當(dāng)工作表的篩選打開(kāi)的時(shí)候才會(huì)返回一個(gè)AutoFilter對(duì)象,否則就是一個(gè)Nothing值。
這樣就出現(xiàn)了一個(gè)問(wèn)題,如何打開(kāi)篩選器?
方法如下:
Range("A1").AutoFilter _
field:=2, _
Criteria1:=xStr, _
visibledropdown:=False '不顯示箭頭
利用Range對(duì)象的AutoFilter方法打開(kāi)。
上述代碼實(shí)際上是很有意義的一些內(nèi)容,它指定了第2列為篩選列,篩選條件為xStr,也就是說(shuō)當(dāng)?shù)?列的值等于變量xStr的值的時(shí)候就會(huì)顯示出來(lái)。
visibledropdown=False表示不顯示向下的箭頭。
還有一些有用的屬性可以在下面的代碼中仔細(xì)查看:
Private Sub SetAutoFilter()
Dim s As Worksheet
Dim Afobj As AutoFilter '定義篩選變量
Dim xStr As String
xStr = Me.ComboBox1.Value '設(shè)置篩選條件
Set s = ActiveSheet
s.AutoFilterMode = False
If s.AutoFilterMode Then
Set Afobj = Me.AutoFilter
Else
'設(shè)置篩選
s.Range("A1").AutoFilter _
field:=2, _
Criteria1:=xStr, _
visibledropdown:=False '不顯示箭頭
End If
Set Afobj = s.AutoFilter
'MsgBox Afobj.Range.Address'返回自動(dòng)篩選范圍
'Afobj.ShowAllData '顯示所有數(shù)據(jù)
Dim i As Integer
For i = 1 To Afobj.Filters.Count
If Afobj.Filters(i).On Then '如果打開(kāi)指定的篩選
Afobj.Filters(i).Criteria1 '返回篩選區(qū)域內(nèi)指定列上的第一個(gè)篩選值
End If
Next i
Set s = Nothing
Set Afobj = Nothing
End Sub
通過(guò)本文內(nèi)容,并不能完全理解篩選的整個(gè)過(guò)程,因?yàn)榇a中涉及到更多的一些對(duì)象和屬性。在此不能把所有的對(duì)象進(jìn)行一一介紹,本節(jié)中掌握了WorkSheet如何返回AutoFilter對(duì)象以及它的幾個(gè)屬性即可達(dá)到目的。
聯(lián)系客服