按條件篩選 使用SQL關鍵詞WHERE查詢中的條件指定要滿足什麼標準信息,去掉不滿足條件的數據(刪除用戶不要的數據)。 WHERE語句中可以有多個條件,條件之間可以用操作符AND 或者OR進行連接。 WHERE語句的語法結構如下:
SELECT 列字段名稱 FROM [表名稱$] WHERE 列字段名 運算符 值
運算符包含大於、小於、等於、不等於、大於或等於、小於或等於、IN、 BETWEEN、AND等 。
應用實例說明,還是昨天數據(為了更好的更新今天的文章,修改了一點數據),只篩選出2號倉的數據;再篩選出入庫數量大於60的數據
源數據:
查詢內容
只查詢2號倉的數據:
查詢2號倉且入庫數量大於60的數據:
代碼運行的結果如下:
代碼如下:
Sub DoSql_Execute3()
Dim cnn As Object, rst As Object
Dim Mypath As String, Str_cnn As String, Sql As String
Dim i As Long
Set cnn = CreateObject("adodb.connection")
'以上是第一步,後期綁定ADO
Mypath = ThisWorkbook.FullName
'以上獲取當前工作簿的路徑及名稱
If Application.Version
< 12 Then
'格式為.xls,調用下述語句
Str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath
Else
'格式為.xlsx,調用下述語句
Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & Mypath
End If
cnn.Open Str_cnn
'判斷一下當前Excel的版本,12.0以下使用“Provider=Microsoft.Jet.Oledb.4.0”,以上使用“Microsoft.ACE.OLEDB.12.0”
'以上是第二步,建立鏈接
'
Sql = "SELECT 條碼,倉位,貨號,入庫數量 FROM [商品信息目錄$] where 倉位='2號倉' and 入庫數量>60"
'Sql語句,查詢商品信息目錄表中條碼,倉位,貨號,入庫數量 並且只篩選出倉位=2號倉的數據,並且入庫的數量要大於60
[a2:d1000].ClearContents
'清空[a2:c1000]區域內容
Range("a2").CopyFromRecordset cnn.Execute(Sql)
'Execute語句先執行SQL語句
'使用單元格對象的CopyFromRecordset方法將SQL查詢到的內容複製到D2單元格為左上角的單元格區域
'以上是第三步,執行SQL語句並將數據讀入表格指定區域
cnn.Close
'關閉鏈接
Set cnn = Nothing
'釋放內存
End Sub
代碼解析
代碼我放了一個例子,大部分的代碼是一致的,只有SQL的句子不一樣。需要注意的是:倉位='2號倉' 2好倉的的符號是英文輸入法下的單引號,不是雙引號。
點擊關注可以更方便的查看Excel VBA的案例文章
私信 SQL 可以獲取SQL代碼的Excel文件
私信 視頻 可以獲取54集VBA入門視頻
私信 VBA或 vba 可以獲取文章中含VBA代碼的Excel文件