Board logo

標題: SQL多表格篩選教學 [打印本頁]

作者: joey0415    時間: 2013-11-6 21:28     標題: SQL多表格篩選教學

本帖最後由 joey0415 於 2013-11-6 21:37 編輯

看到有很多人問類似的問題,之前也曾發生在自己身上,今天透過影片教學方式可能會明白一些

常常有人問要從許多SHEET中找到想到的資料並篩選,2003只能有三種排序,2010好像能更多

但是如果會SQL語法,以上的問題都不是問題,千變萬化,記得之前在EXCEL HOME中有人寫到,數十萬筆資料中找到你要的EXCEL傳統的方法一但數量大了,時間會拉很長,而SQL法依然只要數秒鐘,加上自已親身體驗過,所以發現很重要,只不過EXCEL中的資料表要加上 [    ]  ,正常的資料庫語法是不用的,如果你的資料每天有數十萬筆的,其實要把資料放進真正的資料庫中才是最好的方式,如果有高手能指點更好的方法,請多指教!謝謝
SQL語法教學網站

影片分兩種2003與2010路徑不同

可以看影片找到方法或是用錄製的修改位置即可!
sheet1 內容
[attach]16606[/attach]
sheet2內容
[attach]16607[/attach]
=========================
影片教學:
https://www.youtube.com/watch?v=J4jX1s-ZsOM&feature=youtu.be
2010重要圖片
[attach]16597[/attach]

[attach]16598[/attach]

[attach]16599[/attach]

[attach]16600[/attach]
=========================
影片教學:
https://www.youtube.com/watch?v=crvrCDQtM60&feature=youtu.be
2003重要圖片
[attach]16601[/attach]

[attach]16602[/attach]

[attach]16603[/attach]

[attach]16604[/attach]

[attach]16605[/attach]
=========================
2003 vba語法

紅色字處表示需要修改的語法
F:\data.xls  改成自己檔案的路徑
select * from [Sheet1$] a left join [Sheet2$] b on a.訂單編號=b.訂單編號      改成你要的SQL語法
  1. Sub Macro1()
  2. '
  3.     With ActiveSheet.QueryTables.Add(Connection:=Array( _
  4.         "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=F:\data.xls;Mode=Share Deny Write;Extended Properties=""HD" _
  5.         , _
  6.         "R=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=35;Jet OLED" _
  7.         , _
  8.         "B:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Passwo" _
  9.         , _
  10.         "rd="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet O" _
  11.         , "LEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), Destination _
  12.         :=Range("A1"))
  13.         .CommandType = xlCmdTable
  14.         .CommandText = Array("select * from [Sheet1$] a left join [Sheet2$] b on a.訂單編號=b.訂單編號")
  15.         .Name = "data_3"
  16.         .FieldNames = True
  17.         .RowNumbers = False
  18.         .FillAdjacentFormulas = False
  19.         .PreserveFormatting = True
  20.         .RefreshOnFileOpen = False
  21.         .BackgroundQuery = True
  22.         .RefreshStyle = xlInsertDeleteCells
  23.         .SavePassword = False
  24.         .SaveData = True
  25.         .AdjustColumnWidth = True
  26.         .RefreshPeriod = 0
  27.         .PreserveColumnInfo = True
  28.         .SourceDataFile = "F:\data.xls"
  29.         .Refresh BackgroundQuery:=False
  30.     End With
  31. End Sub
複製代碼
=====================
SQL語法範例

select * from [Sheet1$] where 訂單編號='A002'
select * from [Sheet1$] where 送貨備註='需回收禮卷'
select * from [Sheet1$] where 送貨備註='需回收禮卷' and 總金額=0
select * from [Sheet1$] a left join [Sheet2$] b on a.訂單編號=b.訂單編號
select * from [Sheet1$] a left join [Sheet2$] b on a.訂單編號=b.訂單編號 where a.訂單編號='A002'


=============================

文件下載處:
[attach]16608[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)