Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2281|回复: 8

[已解决]这样的查询问题编程

[复制链接]
发表于 2014-9-23 22:06 | 显示全部楼层 |阅读模式
       这是实际工作的问题,本人想通过VBA来解决,编程难度应该不是很大,但本人VBA编程能力有限,想求助各位大神帮忙。详细问题可见附件,可将已编程好的附件上传至下方或发送至本人邮箱,不胜感谢!


最佳答案
2014-9-23 23:05
本帖最后由 xdragon 于 2014-9-23 23:07 编辑
  1. Sub test()
  2.    Dim conn As Object, i%, sr$(1 To 4), sql$, rngarea$
  3.    Set conn = CreateObject("adodb.connection")
  4.    conn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName
  5.    rngarea = Range("A2:M" & Cells(Rows.Count, 1).End(xlUp).Row).Address(0, 0)
  6.    sr(1) = [r1]
  7.    sr(2) = [t1]
  8.    sr(3) = [w1]
  9.    sr(4) = [z1]
  10.    If Len(sr(1)) Then sql = sql & " and 年份>='" & sr(1) & "'"
  11.    If Len(sr(2)) Then sql = sql & " and 年份<='" & sr(2) & "'"
  12.    If Len(sr(3)) Then sql = sql & " and 行业='" & sr(3) & "'"
  13.    If Len(sr(4)) Then sql = sql & " and 应用类型 like '%" & sr(4) & "%'"
  14.    sql = IIf(Len(Mid(sql, 5)), " where" & Mid(sql, 5), "")
  15.    If Cells(Rows.Count, "P").End(xlUp).Row > 2 Then Range("P3:AB" & Cells(Rows.Count, "P").End(xlUp).Row).Clear
  16.    Range("P3").CopyFromRecordset conn.Execute("select * from [源文件$" & rngarea & "]" & sql)
  17.    Range("P3:AB" & Cells(Rows.Count, "P").End(xlUp).Row).Borders.LineStyle = 1
  18. End Sub
复制代码

查询求编程.rar

30.27 KB, 下载次数: 12

实际问题求编程

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-9-23 22:39 | 显示全部楼层
下次求助宏的话,起码上传个xlsm的附件吧

查询求编程.rar

37.28 KB, 下载次数: 12

回复

使用道具 举报

发表于 2014-9-23 23:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xdragon 于 2014-9-23 23:07 编辑
  1. Sub test()
  2.    Dim conn As Object, i%, sr$(1 To 4), sql$, rngarea$
  3.    Set conn = CreateObject("adodb.connection")
  4.    conn.Open "dsn=excel files;dbq=" & ThisWorkbook.FullName
  5.    rngarea = Range("A2:M" & Cells(Rows.Count, 1).End(xlUp).Row).Address(0, 0)
  6.    sr(1) = [r1]
  7.    sr(2) = [t1]
  8.    sr(3) = [w1]
  9.    sr(4) = [z1]
  10.    If Len(sr(1)) Then sql = sql & " and 年份>='" & sr(1) & "'"
  11.    If Len(sr(2)) Then sql = sql & " and 年份<='" & sr(2) & "'"
  12.    If Len(sr(3)) Then sql = sql & " and 行业='" & sr(3) & "'"
  13.    If Len(sr(4)) Then sql = sql & " and 应用类型 like '%" & sr(4) & "%'"
  14.    sql = IIf(Len(Mid(sql, 5)), " where" & Mid(sql, 5), "")
  15.    If Cells(Rows.Count, "P").End(xlUp).Row > 2 Then Range("P3:AB" & Cells(Rows.Count, "P").End(xlUp).Row).Clear
  16.    Range("P3").CopyFromRecordset conn.Execute("select * from [源文件$" & rngarea & "]" & sql)
  17.    Range("P3:AB" & Cells(Rows.Count, "P").End(xlUp).Row).Borders.LineStyle = 1
  18. End Sub
复制代码

查询求编程.zip

41.49 KB, 下载次数: 7

评分

参与人数 1 +1 收起 理由
marcus84 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-9-23 23:21 | 显示全部楼层
xdragon 发表于 2014-9-23 23:05

你太牛了,已检测,符合我要求
回复

使用道具 举报

 楼主| 发表于 2014-9-23 23:21 | 显示全部楼层
这儿有肥猫 发表于 2014-9-23 22:39
下次求助宏的话,起码上传个xlsm的附件吧

运行代码好像出错了
回复

使用道具 举报

发表于 2014-9-23 23:29 | 显示全部楼层
marcus84 发表于 2014-9-23 23:21
你太牛了,已检测,符合我要求

符合要求,就给3楼一个最佳吧!
回复

使用道具 举报

 楼主| 发表于 2014-9-23 23:39 | 显示全部楼层
su45 发表于 2014-9-23 23:29
符合要求,就给3楼一个最佳吧!

怎么给啊,我新手不会啊,麻烦指点一下
回复

使用道具 举报

 楼主| 发表于 2014-9-23 23:40 | 显示全部楼层
su45 发表于 2014-9-23 23:29
符合要求,就给3楼一个最佳吧!

看到了,会了
回复

使用道具 举报

发表于 2014-9-24 09:12 | 显示全部楼层
marcus84 发表于 2014-9-23 23:21
运行代码好像出错了

未发现出错啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-12 18:04 , Processed in 0.581986 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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