ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4984|回复: 11

VBA单个或多个条件查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-12-3 18:54 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
附件表中通过vba按月份,单据类型,单位,这三个条件中的一个条件,或两三个条件查询数据库表中的数据

请各位老师帮忙 查询.rar (79.28 KB, 下载次数: 56)


TA的精华主题

TA的得分主题

发表于 2014-12-3 20:37 | 显示全部楼层
请测试
  1. Sub Inquire()
  2. Dim arr()
  3. Dim crr(), SK$, m&
  4. Dim KEY$, i&, j&
  5. Dim CXYF As String, DJLX As String, CXDW As String
  6. With Sheet4
  7. If .Cells(2, 2) <> "" Then CXYF = .Cells(2, 2).Value Else CXYF = "*"
  8. If .Cells(2, 4) <> "" Then DJLX = .Cells(2, 4).Value Else DJLX = "*"
  9. If .Cells(2, 6) <> "" Then CXDW = .Cells(2, 6).Value Else CXDW = "*"
  10. arr = Sheet6.UsedRange  'Starting from 2
  11. ReDim crr(1 To UBound(arr), 1 To UBound(arr, 2))
  12. KEY = CXYF & "|" & DJLX & "|" & CXDW
  13. For i = 3 To UBound(arr)
  14.    SK = Month(arr(i, 1)) & "|" & arr(i, 2) & "|" & arr(i, 4)
  15.    If SK Like KEY Then
  16.       m = m + 1
  17.       For j = 1 To UBound(arr, 2)
  18.          crr(m, j) = arr(i, j)
  19.       Next j
  20.    End If
  21. Next i
  22. .Cells(4, 1).Resize(UBound(crr), UBound(crr, 2)) = crr
  23. End With
  24. End Sub
复制代码

查询.zip

86.02 KB, 下载次数: 165

TA的精华主题

TA的得分主题

发表于 2014-12-3 21:42 | 显示全部楼层
  1. Sub 条件查询()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, strSQL As String
  4.     Dim i As Integer, PathStr As String
  5.     Set Conn = CreateObject("ADODB.Connection")
  6.     Set Rst = CreateObject("ADODB.Recordset")
  7.     PathStr = ThisWorkbook.FullName
  8.     strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties='excel 8.0;hdr=yes';Data source=" & PathStr
  9.     Conn.Open strConn
  10.     strSQL = "select * from [数据库$a2:K] where month(日期) = '" & Sheets("查询").Cells(2, "B") & "' and 收货付款 = '" & Sheets("查询").Cells(2, "D") & "' and 单位 = '" & Sheets("查询").Cells(2, "F") & "'"
  11.     Set Rst = Conn.Execute(strSQL)
  12.     With Sheets("查询")
  13.         .UsedRange.Offset(3).ClearContents
  14.         For i = 0 To Rst.Fields.Count - 1    '填写标题
  15.             .Cells(3, i + 1) = Rst.Fields(i).Name
  16.         Next i
  17.         .Range("A4").CopyFromRecordset Rst
  18.     End With
  19.     Rst.Close    '关闭数据库连接
  20.     Conn.Close
  21.     Set Conn = Nothing
  22.     Set Rst = Nothing
  23.     Sheets("查询").Select
  24. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2014-12-3 22:04 | 显示全部楼层
详见附件   

SQL条件查询.rar

78.21 KB, 下载次数: 135

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-4 09:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhenghui13 发表于 2014-12-3 20:37
请测试

谢谢,可以了,非常感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-4 09:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jpj123 发表于 2014-12-3 21:42

代码只能三个条件一起查询,不能单一个,或两个查询
很感谢你!

TA的精华主题

TA的得分主题

发表于 2014-12-4 14:13 | 显示全部楼层
jovelive 发表于 2014-12-4 09:51
代码只能三个条件一起查询,不能单一个,或两个查询
很感谢你!
  1. Sub 条件查询()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, strSQL As String
  4.     Dim i As Integer, PathStr As String
  5.     Dim A1, A2, A3
  6.     Set Conn = CreateObject("ADODB.Connection")
  7.     Set Rst = CreateObject("ADODB.Recordset")
  8.     PathStr = ThisWorkbook.FullName   '设置工作簿的完整路径和名称
  9. '--------------------------------------------------------------------------
  10. With Sheets("查询")
  11. If .Cells(2, 2) <> "" Then A1 = .Cells(2, 2).Value Else A1 = "%"
  12. If .Cells(2, 4) <> "" Then A2 = .Cells(2, 4).Value Else A2 = "%"
  13. If .Cells(2, 6) <> "" Then A3 = .Cells(2, 6).Value Else A3 = "%"
  14. End With
  15. '------------------------------------------------------------------------
  16.     strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties='excel 8.0;hdr=yes';Data source=" & PathStr
  17.     Conn.Open strConn    '打开数据库链接
  18.     strSQL = "select * from [数据库$a2:K] where month(日期) like '" & A1 & "' and 收货付款 like '" & A2 & "' and 单位 like '" & A3 & "'"
  19.     Set Rst = Conn.Execute(strSQL)    '执行查询,并将结果输出到记录集对象
  20.     With Sheets("查询")
  21.         .UsedRange.Offset(3).ClearContents
  22.         For i = 0 To Rst.Fields.Count - 1    '填写标题
  23.             .Cells(3, i + 1) = Rst.Fields(i).Name
  24.         Next i
  25.         .Range("A4").CopyFromRecordset Rst
  26.     End With
  27.     Rst.Close    '关闭数据库连接
  28.     Conn.Close
  29.     Set Conn = Nothing
  30.     Set Rst = Nothing
  31.     Sheets("查询").Select
  32. End Sub
复制代码
也可以实现模糊查询

TA的精华主题

TA的得分主题

发表于 2014-12-4 14:14 | 显示全部楼层
详见附件     

SQL条件查询.rar

78.95 KB, 下载次数: 167

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-5 12:32 | 显示全部楼层
jpj123 发表于 2014-12-4 14:14
详见附件

非常感谢你的帮忙,学习了。!!谢谢!

TA的精华主题

TA的得分主题

发表于 2018-9-13 13:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

学习了,正好用到。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 22:55 , Processed in 0.041070 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表