【分享】多個關鍵字檢索數據的代碼解析

我分享過的兩個實用的管理工具:

一個是材料出入庫管理工具 ;

一個是通訊錄管理工具 。

在這兩個工具中,都用到了一種多關鍵字搜索的方式,不少朋友反饋這個多關鍵字搜索使用起來非常實用、方便。現在我將實現多關鍵字搜索的思路和代碼和你們分享下。

此思路和方式是我自己摸索出來的,代碼不一定是最簡潔的,方法也不一定是最高效的。分享出來,拋磚引玉,希望各位朋友共同學習和優化。

當然,如要你需要在你的表格中實現多關鍵字搜索,可以直接把代碼拿過去使用,只修改數據賦值部分Arr數據區域和Str查詢字段兩個就可以了。獲取到結果後,再根據實際情況設置列表框的屬性。

需要此文件的朋友,可以關注我,然後通過私信發送關鍵字【關鍵字搜索】獲取文件。文中所有代碼都有註釋,只要你能看明白,就可以修改成自己所要的。


效果演示(演示中,多個關鍵字之間要用空格隔開)

【分享】多個關鍵字檢索數據的代碼解析

思路如下:

一、申明變量及變量賦值

【分享】多個關鍵字檢索數據的代碼解析

申明變量部分,每個變量做什麼,都有詳細註釋,大家可以結合後面的代碼看;

【Arr數組】賦值:將工作表的數據區域賦值給數組Arr,用於後續的分析和判斷(此處用數組來裝載數據,是為了提高數據的運行和處理效率,因為在內存中運算數據要比從工作表中提取要快很多)。

重新申明結果儲存數組【Tmp】的大小,此處重新申明的數組大小,設置成了和Arr一樣大,因為查詢結果未知,設置成一樣大,在關鍵字為空的時候,才能顯示出完整的數據,且不會出現空行。


二、對查詢關鍵字進行分析判斷

【分享】多個關鍵字檢索數據的代碼解析

此部分共分為五個階段:

1、將需要查詢的字段,用【&】符號連接起來,賦值給變量【Str】;

2、對關鍵字進行處理:

如果關鍵字中有空格,就判斷為多個關鍵字,用Split函數,以空格為分隔符,將多個關鍵字拆分,並將拆分結果賦值給數組Tmp1;如果關鍵字中無空格,則查找的為單個關鍵字。

3、關鍵字搜索:

①單個關鍵字:就直接用INSTR函數在STR中是否存在關鍵字;

②多個關鍵字:使用For循環,逐一對關鍵進行循環,然後用Instr函數對每個關鍵字進行判斷,判斷Str字符串中是否包含所此關鍵字。

4、對搜索結果進行判斷:

①當Str中有搜索關鍵字時,計數器【x】自動加1,直到所有關鍵字全部循環判斷完成;

②關鍵字循環完成後,判斷計數器【x】的值是否與關鍵字的個數相同;

③如果【x】的值和關鍵字個數一樣,則表示當前【STR】字符串中包含所有關鍵字,即此條【STR】數據符合搜索要求;

④如果【x】的值小於關鍵字個數,則表示當前【Str】字符串中未包含所有的關鍵字,即此條【Str】數據不符合搜索要求。

5、將此條符合查詢結果的數據寫入儲存數組【Tmp】中,然後執行下一條數據循環,直到所有數據循環完成,並將所有符合查找結果的數據記錄在Tmp數組中。


三、對查詢結果的處理

【分享】多個關鍵字檢索數據的代碼解析

設置關鍵字時,由於設置申明的【Tmp】數組比查詢結果要大,所以在數組中會存在一些空值,顯示到列表框中就是空行,所以需要將查詢結果處理下,只將有效數據提取出來。

到此,搜索過程已完成。


四、將最終結果寫入列表框

【分享】多個關鍵字檢索數據的代碼解析

但是現在搜索結果僅僅是儲存在內存中,還需要將顯示出來,比如別入工作表中或者Listbox列表框中,或者Listview列表框中。本例中時將查詢結果寫入Listbox列表框中,所以需要對列表框進行一些設置。


五、代碼移植和修改

如果要將代碼用於其他地方,需要對代碼做修改,僅需要修改以下三個地方:

1、變量賦值中的數組Arr,將實際數據區域賦值給Arr即可;

2、關鍵字查詢中的Str字符串,根據你的實際情況,將需要查詢的字段合併即可。

3、獲取到查詢結果後,還需要根據實際數據情況設置listbox的參數,比如列表框列數、列表框列寬等。


我是上班下班,因為愛好辦公軟件、喜歡分享。所以來到這裡將我的學習心得和踩過的一些坑,和大家分享,希望大家學習我成功的經驗,避開我踩過的坑。我和你們一起進步。

好了,今天就聊到這裡,感謝各位朋友的關注和支持。

如果你喜歡我分享的內容,請點個贊支持下;

如果你覺得我分享的內容對你有幫助,可以關注我;

如果要看我以前分享過的好玩的內容,大家可以去我的主頁查看歷史文章。


分享到:


相關文章: