友快網

導航選單

vba實現區間查詢的區域查詢功能------------案例分析

前景提要

上一節我們學習瞭如何透過VBA來實現模糊查詢,並單獨展示結果,小夥伴的反饋也是很實用,看來隨著資料結構和容量的不斷變化,我們對於資料的查詢要求也是不斷的提升啊

同時也有小夥伴說,有一些場景並不是太適用於模糊查詢,比方說數字,模糊查詢確實比較適合文字的查詢,而數字的查詢,更多的還是適用於區域的查詢,既然說到這裡,那麼今天我們就來實現用VBA實現資料的區間查詢。

這個功能可不是CTRL+F就可以實現的功能哦

場景說明

今天的場景是這樣的,我們現在不針對姓名列進行查找了,我們需要針對考試成功進行查詢,當然並不是簡單某科成績的精確查詢,而是多科成績,按照不同的區間來進行查詢

這在我們日常工作中,進行資料分析的時候會很常用

直接看程式碼

程式碼區

Sub test3()

ActiveSheet。Range(“A1”)。CurrentRegion。AdvancedFilter  _

Action:=xlFilterCopy, _

CriteriaRange:=Range(“k1:l2”), _

Unique:=False, _

CopyToRange:=ActiveSheet。Range(“A17”)

End Sub

咦,上節我們學習文字的模糊查詢的時候,那個程式碼可是不少的

現在多列多條件的查詢,條件多了,怎麼程式碼量反而減少了呢?

因為我們今天沒有使用range。find功能。我們使用的是range。AdvancedFilter

先來看看程式碼的效果

這個功能已經超出了CTRL+F的查詢功能,這個是多條件的查詢

從結果上來看,我們也是成功的將資料中語文成績>90,數學>70的所有的成績都一次查找出來,並且單獨展示出來

效果和功能上就更加完美了。

程式碼解析

有了結果,我們回過頭來看看程式碼是如何實現這樣的結果的

我們前面也說了,我們今天不適用range。find方法了。

我們換一個方法,range。AdvancedFilter方法

我們直接來看程式碼,一個個的解釋下

Action:=xlFilterCopy

這個是標準寫法,無需改動,直接這樣寫就行

CriteriaRange:=Range(“K1:L2”)

這個是我們的條件區間,我們的條件在哪裡,這個CriteriaRange後面的區間就是指向我們的查詢的條件的

Unique:=False

這個,如果小夥伴中有學習python的話,應該之前在用python處理Excel常用的就是pandas模組,而這個模組下,有一個方法也是Unique,他的作用就是獲取資料的唯一值,而今天這裡的Unique也是一樣的作用,他就是用來表示是否要獲取資料的唯一值的,false就是代表不是,如果要最終結果展示唯一值,就改成True

我們演示下

可以看到當Unique:=False的時候,A8資料會展示出兩行,因為這兩行都是滿足我們的篩選條件的,如果我們將程式碼修改下,將Unique:=True,來看看

我們看到最後的結果出現了不同,這就是這句程式碼的作用,用來提取唯一值

CopyToRange:=ActiveSheet。Range(“A17”)

這一句程式碼表示的就是最終的結果要展示的區間,案例中,我們的結果都是展示在A17為起點的一個單元格區間

不管資料有多少行,標頭都是在A17這一行的。

怎麼樣,難度提升了,程式碼反而減少了,這樣的VBA,你愛了嗎?

上一篇:易經堂:教你四招財運風水化煞法
下一篇:【今日專屬星座】勞動節前,能夠喜迎好運的星座,看看有沒有你?!