学习资源:《Excel VBA从入门到进阶》第72集 by兰色幻想
这节课来详细讲解Select语句。
Select 字段 from 表 where 条件
例:从sheet1中筛选全部数据。
* 表示全部字符,无条件可以省略where。
Select * from [sheet1$]
如果是对表中特定单元格区域进行查找,可以在[sheet1$]的$后面加单元格区域。
在开讲之前,先在类模块写好打开数据库、复制筛选后的数据到单元格区域和关闭数据库的代码,以便后续可直接调用和增加代码可读性。
类模块命名为数据库,三个属性的名称分别为Excel数据库、Access数据库、执行筛选。
Property Get Excel数据库()
Excel数据库 = "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.path & "/Database/CangKu.xls"
End Property
Property Get Access数据库()
Access数据库 = "provider=Microsoft.jet.OLEDB.4.0;data source=" & ThisWorkbook.path & "/Database/CangKu.mdb"
End Property
Sub 执行筛选(Mydata As String, sq As String) '参数有数据库Mydata和地址sq
Dim conn As New Connection
Dim rst As New Recordset
With ActiveSheet 'Sheets("sheet1")
.Range("a2:i100") = "" '清空单元格区域
conn.Open Mydata '打开数据库
.Range("a2").CopyFromRecordset conn.Execute(sq) '把数据复制到单元格中
End With
conn.Close '关闭数据库
Set conn = Nothing '释放对象
End Sub
本节课所用的数据库是
一、按条件筛选
- 按条件筛选——数字条件
直接用对比符号,><=
例1:在sheet1中筛选销售单价>100的数据。
Sub 按条件筛选1()
Dim sql As String
Dim data As New 数据库
sql = "Select * from [sheet1$] Where 销售单价 > 100"
data.执行筛选 data.Excel数据库, sql
End Sub
2. 按条件筛选——字符条件
注意:字符条件是文本字符要用单引号括起来。
例2:在sheet1中筛选物品名称为'挡泥板'的数据。
Sub 按条件筛选2()
Dim sql As String
Dim data As New 数据库
sql = "Select * from [sheet1$] Where 物品名称 ='挡泥板'"
data.执行筛选 data.Excel数据库, sql
End Sub
3. 按条件筛选——日期条件
日期条件前后要加#号。
例3:在sheet1中筛选出库日期是2005-1-4的数据。