一說到Excel工作簿内容合并、多工作簿查詢、外部數據源的查詢引用的實現,那麼很多人第一想法就是使用公式、VBA、Power query。沒錯,這幾個确實可以。我本人是一個Power query重度依賴者,經常使用PP來做數據查詢。可後來慢慢的發現,Power query問題真的很多,比如說占用内存太大、運行非常緩慢。另外,一些低版本的Excel不支持PP,同時WPS也是不支持PP的。這個讓我非常頭疼,于是不得不找其它辦法。于是在不經意間發覺了以下這個一直被忽視的東西:Microsoft Query。于是,我就使用這玩意試着分别連接SQL Server做了一個動态财務的科目彙總表查詢,和連接Access做了一個動态查詢。效果如下:
科目彙總查詢表
工程款支付查詢表
以上,兩個測試完全實現了使用參數的動态查詢。以往,實現這種效果,要麼使用VBA、要麼使用power query。以下,我們來看一下怎麼實現它呢。
1、打開菜單欄,找到Microsoft Query的
2、進入數據源配置界面
這裡已經存在了常用的Excel、Access這兩種數據源連接方式。但其他的,我們需要單獨建立。在此以SQL Serve為例。
剛才建立的數據源就出現在了列表裡面
接下來我們來看如何實施查詢
首先,選擇一下數據庫,然後添加一下需要用到的表
以上這個界面,作為使用過Foxpro的人應該不陌生,果然是上古的傑作。我們看到,從數據添加的表,自帶了表間關系。這個非常省心,如果是Excel查詢,那麼就得自己建立表間關系了。
接下來,我們把需要用到的的字段全部添加到列表裡面,因為有表間關系,會自動做數據參照。查詢器裡面的好多細節操作,在此就不過多描述了。
現在我們來看一下,查詢器自己生成的 SQL語句
在使用過程中,因為需要做動态查詢,因此加入了查詢參數,然後這部分參數又被綁定到了工作表的單元格上。隻要在這部分單元格就可以作為查詢條件來使用,隻要這部分單元格數值有變動,那麼查詢就會同步更新,根本不需要刷新或者添加按鈕來執行查詢。具體如下:
現在,讓我們來看看,做出同樣效果的東西,VBA和Power Query的工作量:
首先,來看VBA的工作量:
1、單獨設計的查詢界面
2、部分VBA代碼
至于power query稍微好一些,在引入數據的時候一句SQL語句就能解決,但是這貨對于使用參數做動态查詢實在太麻煩,需要合并好幾幾次查詢才行。
最後,對比Microsoft Query、VBA、Power query。可以說Power Query應該是Microsoft Query 的升級版,但是PQ使用的是M語言,在使用便利性和性能上不占優勢,随便一個查詢動辄就是幾個G的内存占用,分分鐘就死機。使用過多以後,感覺目前的PQ,還真隻是一個玩具,它還有很大的改進空間。而VBA,這個看似無所不能,但正是無所不能才更加不那麼好控制。至于Microsoft Query而言,并非沒有缺點,最大的缺點我認為是多表連接查詢時候沒法使用左連接、右連接以及外部連接,隻能使用内部或者說等值連接。所以,對于日常的合并工作表,還是建議使用MQ。
創作不易,轉載請注明來源!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!