按条件筛选 使用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文件