Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

12345678下一頁(yè)
返回列表 發(fā)新帖
查看: 30591|回復(fù): 75
打印 上一主題 下一主題

[VBA編程/宏] 淺談Excel查詢(xún)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2011-3-12 23:37:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 roych 于 2011-3-13 15:04 編輯

       跟Access相比,Excel的查詢(xún)功能盡管比較弱,但還是可以進(jìn)行的,大體有以下幾種方法:
       1、自動(dòng)篩選或者高級(jí)篩選法。如果不需要常常更改條件的話(huà),自動(dòng)篩選或者高級(jí)篩選,不失為一種好辦法。畢竟操作的步驟并不多,即便條件再多,一分鐘內(nèi)應(yīng)該也可以完成。
       2、公式法:用Index+Small,再加上條件數(shù)組,是可以進(jìn)行一定的查詢(xún)的。格式一般是:{=Index(區(qū)域,small(if(條件,區(qū)域行數(shù),),row(1:1)))},詳細(xì)見(jiàn)附件。
       3、導(dǎo)入數(shù)據(jù)法。要領(lǐng)在于導(dǎo)入之后再編輯SQL語(yǔ)句,以達(dá)到查詢(xún)的目的。需要注意的是,數(shù)據(jù)源位置必須正確,詳細(xì)看附件中的“說(shuō)明”工作表。
       4、利用內(nèi)置函數(shù),寫(xiě)VBA進(jìn)行查詢(xún)。利用內(nèi)置函數(shù)的Countif、CountA等函數(shù),再加上For語(yǔ)句,逐個(gè)歷遍,以達(dá)到查詢(xún)的目的。
       5、利用ADO對(duì)象,編寫(xiě)數(shù)據(jù)集語(yǔ)句執(zhí)行。

       好,方法說(shuō)完了,有興趣的可以看看它們之間的優(yōu)缺點(diǎn)了:
       前面三個(gè)針對(duì)單次查詢(xún)較為有效,可以省卻編程的繁瑣。

       方法1,如果需要對(duì)所篩選的數(shù)據(jù)進(jìn)行求和,則需要先篩選出來(lái),再求和(當(dāng)然,你也可以用狀態(tài)欄來(lái)顯示求和結(jié)果)。
       方法2,當(dāng)然也無(wú)法求和的了,借助單元格變量,明顯比自動(dòng)篩選方便。而且,你還可以多加幾個(gè)條件,——把if里的語(yǔ)句改為:(Range1=條件1)*(Range2=條件2)……。而和第一種方法相比,其缺點(diǎn)在于數(shù)據(jù)較多時(shí),對(duì)內(nèi)存影響比較大。
       方法3,比起方法2,方法3更加靈活,可以隨時(shí)變更SQL條件而達(dá)到多次查詢(xún)的目的。當(dāng)然,前提是,您必須知道SQL語(yǔ)句的基本語(yǔ)法。
       方法4,比起方法3,不用每次都更改SQL語(yǔ)句,而只須在單元格填上條件即可,自然方便多了。不足之處在于條件較多,循環(huán)語(yǔ)句歷遍時(shí),對(duì)內(nèi)存要求比較高,也因此而變得不易于調(diào)試。例子來(lái)源于Polygala1978
       http://m.mzhfr.cn/forum.php?mod=viewthread&tid=96395&page=1#pid586469,在此一并謝過(guò)。
       方法5,和方法4相比,同樣可以達(dá)到相同的查詢(xún)目的,而由于沒(méi)有用到循環(huán)語(yǔ)句(或者循環(huán)語(yǔ)句比方法4的要少),從而更加優(yōu)化了代碼的執(zhí)行效率。在執(zhí)行查詢(xún)前,應(yīng)先調(diào)試SQL語(yǔ)句是否有誤,還要注意字段類(lèi)型等,詳見(jiàn)附件的代碼注釋。
       希望大家不要覺(jué)得Roy過(guò)于羅嗦噢。不過(guò),Excel查詢(xún)又豈是三言?xún)烧Z(yǔ)可以說(shuō)得很清楚的呢?如有不清楚之處,請(qǐng)大家隨時(shí)反饋。
      
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)

       更新后的附件,有了模糊查詢(xún)的功能。相信大家更加喜歡吧。O(∩_∩)O~~
       在VBA語(yǔ)言里,Access和Excel的是不同的,前者為星號(hào)(*),后者為百分號(hào)(%),這很是困惑了我一陣子。在這里順便提一下,以便新手少走一些彎路。        

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

本帖被以下淘專(zhuān)輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享分享2 分享淘帖1 訂閱訂閱

點(diǎn)擊這里給我發(fā)消息

推薦
發(fā)表于 2014-4-23 16:29:12 | 只看該作者
學(xué)習(xí)了,謝謝
2#
發(fā)表于 2011-3-13 09:16:28 | 只看該作者
學(xué)習(xí)了,謝謝
3#
發(fā)表于 2011-3-13 10:50:01 | 只看該作者
本帖最后由 aslxt 于 2011-3-13 11:22 編輯

好好學(xué)習(xí)天天向上
請(qǐng)問(wèn)(方法4):
查詢(xún)條件輸入的那些單元格是否可以做成組合框的形式?
可否改成模糊查詢(xún)?
謝謝
4#
發(fā)表于 2011-3-13 13:24:49 | 只看該作者
謝謝樓主大人
5#
發(fā)表于 2011-3-13 13:34:46 | 只看該作者
本帖最后由 polygala1978 于 2011-3-13 13:37 編輯

體驗(yàn)了下,發(fā)現(xiàn)模糊(字段不全情況下)查詢(xún)不能用,希望能添加上。
6#
 樓主| 發(fā)表于 2011-3-13 13:36:13 | 只看該作者
回復(fù) aslxt 的帖子

改成有效性序列時(shí),就相當(dāng)于組合框了~~但是這個(gè)數(shù)據(jù)較多,可能做成二級(jí)下拉菜單要好些。
7#
 樓主| 發(fā)表于 2011-3-13 13:41:28 | 只看該作者
回復(fù) polygala1978 的帖子

沒(méi)有啊,我輸入兩個(gè)條件還是可以查詢(xún)的。

你的意思可能是想改成Like語(yǔ)句,用通配符來(lái)做是吧?那我抽空再改改了。O(∩_∩)O~

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x
8#
發(fā)表于 2011-3-13 14:30:23 | 只看該作者
回復(fù) roych 的帖子

主要是可投區(qū)和不可投區(qū)需要實(shí)現(xiàn)模糊查詢(xún),(主要是顧客信息不全,需要模糊搜索)例如:城關(guān)鎮(zhèn),輸入城關(guān)就能查詢(xún)到與城關(guān)相關(guān)的地區(qū)。不知道能否實(shí)現(xiàn)。再次感謝您的幫助。
9#
 樓主| 發(fā)表于 2011-3-13 14:59:29 | 只看該作者
回復(fù) polygala1978 的帖子

可以實(shí)現(xiàn)。詳見(jiàn)我更新后的附件。

點(diǎn)擊這里給我發(fā)消息

10#
發(fā)表于 2011-3-13 15:58:32 | 只看該作者
怎么單單漏了“查找”和“定位”兩個(gè)功能
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 08:08 , Processed in 0.104762 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表