設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 30149|回復: 61
打印 上一主題 下一主題

多表不重復數據提。ㄓ涗浖

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2011-1-9 23:08:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       之前,壇友psj886提出如何多表合并數據,我當時回復說,方法很多,而且推薦使用數據透視表來做會相當簡單,先把數據集中起來,然后再用透視表來做,詳見:
       http://www.mzhfr.cn/forum.php?mod=viewthread&tid=95948&page=1#pid580077
       不過壇友對此似乎不太滿意,小生誠惶誠恐,只好寫一段VBA代碼了,如果您喜歡不妨評下分吧,——負分就不用了,我想,這個帖子也沒那么差吧?(*^__^*) 嘻嘻……)

       VBA的思路有兩種,可以考慮高級篩選,不過需要使用循環(huán)語句,可能還要計算位置以便把數據集中在一起,當然這是思路而已,要實現起來并非易事。另一種就簡單多了,那就是即將隆重登場的ADO(ActiveX Data Object)方式了。

       我們先假定如果用Access應該怎么處理?導入后聯(lián)合查詢。不錯,那么如果我們能在Excel里模仿這個操作不就可以完成任務了(Roy沾沾自喜地說,“太厲害了,不得不佩服我自己了!保
       不過,和Access不同的是,Excel里要先創(chuàng)建相應的組件(數據連接和記錄集),——如果不創(chuàng)建,則需要引用相關的庫。還有一點,在Access里自帶數據連接引擎,但在Excel里需要聲明。
       好了,不說那么多,貼上代碼先~~代碼中有些參數恕(例如Cnn.open)我不解釋了!绻袝r間,我將貼一篇相應教程上來供大家參考。
  1. Sub 數據集VBA()
  2. '先清空數據以便備用
  3. Sheets("數據集VBA").Range("A:B").Clear
  4. '定義組件和SQL語句
  5. Dim Cnn, Rst As Object
  6. Dim SSql As String
  7. '創(chuàng)建數據庫連接和數據集
  8. Set Cnn = CreateObject("ADODB.connection")
  9. Set Rst = CreateObject("ADODB.recordset")
  10. '打開鏈接
  11. Cnn.Open "Provider=Microsoft.Jet.OleDb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
  12. '寫入SQL語句。
  13. SSql = "select Article,描述 from [1$J2:K300]"
  14. '聯(lián)合查詢,為了提取不重復值,這里沒有使用All謂詞
  15. SSql = SSql & " Union select Article,描述 from [2$J2:K65536]"
  16. SSql = SSql & " Union select Article,描述 from [3$J2:K65536]"
  17. SSql = SSql & " Union select Article,描述 from [4$J2:K65536]"
  18. Cnn.Execute (SSql)
  19. '打開數據集
  20. Rst.Open SSql, Cnn, adOpenKeyset
  21. '復制數據集到相應的單元格
  22. Sheets("數據集VBA").Range("A2").CopyFromRecordset Rst
  23. '關閉數據集和鏈接
  24. Rst.Close
  25. Cnn.Close
  26. '釋放內存
  27. Set Rst = Nothing
  28. Set Cnn = Nothing
  29. End Sub
復制代碼
游客,如果您要查看本帖隱藏內容請回復

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x

評分

參與人數 1經驗 +30 收起 理由
pureshadow + 30 我很贊同

查看全部評分

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享分享1 分享淘帖1 訂閱訂閱
2#
發(fā)表于 2011-1-9 23:12:25 | 只看該作者
先坐個沙發(fā)
3#
發(fā)表于 2011-1-10 08:21:18 | 只看該作者
抬著板凳圍觀
4#
發(fā)表于 2011-1-10 14:12:38 | 只看該作者
xuexixuexi
5#
發(fā)表于 2011-1-10 15:22:30 | 只看該作者
看不懂- -#我好笨哦。。。
6#
發(fā)表于 2011-1-10 15:28:21 | 只看該作者
有什么方法可以按照個部門ARTICLE排列數據的么?就是順序不變,提取。。。
7#
 樓主| 發(fā)表于 2011-1-10 17:29:01 | 只看該作者
回復 psj886 的帖子

這里是根據當時的例子來考慮的,只有四張表,把不重復的字段匯總成兩列而已。如果按你說的方法,可能會出現:
部門1  Article1 描述1
部門1  Article2 描述2
部門2  Article1 描述1
部門2  Article3 描述3
……………………………
顯然Aticle1在兩個部門都有,不符合你所說的不重復值的提取噢,如果這不算不重復是可以實現的
8#
發(fā)表于 2011-2-1 12:48:57 | 只看該作者
回復 roych 的帖子

不是這樣的。。。 Article和描述是不會重復的,比如:
部門:農產; Article 101;描述:國光蘋果。
部門:農產; Article 102;描述:富士蘋果。
部門:農產; Article 5001;描述:法國蘋果。
部門:農產; Article 5002;描述:日本蘋果。
等等。。。 Article和描述是唯一的。
9#
 樓主| 發(fā)表于 2011-2-1 19:40:34 | 只看該作者
還是要你的源文件才能處理~~
10#
發(fā)表于 2011-4-24 05:49:35 | 只看該作者
抬著板凳圍觀
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-17 03:30 , Processed in 0.105970 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表