EXCEL如何用VBA实现多条件查询数据?

EXCEL如何用VBA实现多条件查询数据?,第1张

1、以商场2015年第一季度电器销售统计为例子,“产品”、“品牌”、“月份”3个条件的销售额进行查询。

2、假设要查询“康佳”的“1月”份“各类家电”的销售额,先建一个对应列的工作簿。如图,输入条件1:“成品名称”,条件2:“品牌名称”,条件3:“月份”,

3、下面到了建立宏的步骤:单击菜单栏中的“开发工具”——插入——表单控件——按钮,在出现的十字箭头上拖住画出一个按钮,如图所示。

4、在d出的查找红对话框中选择“录制”,在d出的“录制新宏”对话框中,修改宏名称为“查找”,单击确定。

5、单击“开发工具”——查看代码,打开VBA编辑器,如图所示。

6、在VBA编辑器点击插入-模块,如图,

7、现在来输入代码:

Sub 查找()

Dim i As Integer, j As Integer

arr1 = Sheets("数据")Range("A2:D" & Sheets("数据")Cells(RowsCount, "A")End(xlUp)Row)

arr2 = Sheets("查找")Range("A2:D" & Sheets("查找")Cells(RowsCount, "A")End(xlUp)Row)

For i = 1 To UBound(arr2)

For j = 1 To UBound(arr1)

If arr2(i, 1) = arr1(j, 1) And arr2(i, 2) = arr1(j, 2) And arr2(i, 3) = arr1(j, 3) Then

arr2(i, 4) = arr1(j, 4)

GoTo 100

End If

Next

arr2(i, 4) = ""

100:

Next

Sheets("查找")Range("A2:D" & Sheets("查找")Cells(RowsCount, "A")End(xlUp)Row) = arr2

End Sub

8、现在回到EXCEL表格,右击按钮,选择“编辑文字”,修改按钮名称为“统计”。

9、那么就完成了。

呵呵,以前就帮人家解决过这个,请看下面的代码,有注释的!
Private Sub CommandButton5_Click()
Dim Conn As New ADODBConnection '定义ADODB连接对象
Dim ConnStr As String '定义连接字符串
Dim xiao As String

xiao = ComDataText
'对于SQL 2008,如果以IP方式访问服务器,必须要启动SQL Server Browser服务,如果是Express版本,要以“IP(计算机名)\实例名”方式访问
ConnStr = txtDataText
Dim Records As New ADODBRecordset '定义ADODB对象的记录集
Dim Sheet As Worksheet '定义工作表
Set Sheet = ThisWorkbookWorksheets("Sheet2") '给变量Sheet赋值,注意:是工作簿中索引为1的那个表(通常一个新的工作簿Sheet1的索引为1)
'SheetName = "Data" '把Sheet名称改为Data
SheetCellsClear '清空表中原有的数据
'连接状态是打开就不在进行Open *** 作
ConnOpen ConnStr
Dim SQLStr As String '要执行的SQL语句
SQLStr = "select from Shift_Code where Club='" + xiao + "'" '可以执行更复杂的SQL语句
RecordsOpen SQLStr, Conn, adOpenStatic, adLockBatchOptimistic '读取SQL查询结果到Records记录集
'RecordsOpen
Dim i, j, TotalRows, TotalColumns As Integer
j = 0
TotalRows = RecordsRecordCount
TotalColumns = RecordsFieldsCount
'下面的循环把表头(即列名)写到Excel表的第一行
For i = 0 To TotalColumns - 1
Sheet2Cells(1, i + 1) = RecordsFields(i)Name
Next

'下面的循环把查询结果写到Excel表中
Do While Not RecordsEOF
For i = 0 To TotalColumns - 1
Sheet2Cells(j + 2, i + 1) = RecordsFields(i)Value
Next

RecordsMoveNext
j = j + 1

Loop
RecordsClose '关闭记录集
ConnClose '关闭连接
Set Records = Nothing '清空对象
Set Conn = Nothing '清空对象
End Sub
有什么不懂的话Hi我!

'初始化连接数据库
Sub Init()
If ConnState <> 0 Then ConnClose '检查数据连接是否开着,如果开着就关闭当前连接
Dim conStr As String
conStr = "Provider=MicrosoftJetOLEDB40;Data Source=" & ThisWorkbookPath & "\db1mdb;Persist Security Info=False" '打开当前EXCEL工作薄相同目录下的db1mdb数据库
ConnOpen conStr '连接上conStr指定的数据库
End Sub
RsOpen "select from ygxx where 姓名='" & TextBox1 & "'", Conn, 1, 1 '把ygxx表中“姓名”字段内容等于TextBox1中内容的数据检索出来
RsOpen "select from ygxx", Conn, 1, 3 '把ygxx表中的全部数据检索出来
Rs(1)应该是Recordset的第一个字段


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10567845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存