Excel精英培训网

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

[已解决]导入某表的部分符合条件的列的数据

[复制链接]
发表于 2014-3-25 09:33 | 显示全部楼层 |阅读模式
本帖最后由 chensir 于 2014-3-25 10:40 编辑

想将“基础表”里“表1”里月份为1的数据导入到“分析表”的“表1”里。只将“品牌”、“年份”、“季节”、“月份”、“店铺名称(HD)”这几列符合月份为“1”的数据导入。求VBA语句,多谢。
最佳答案
2014-3-25 09:42
本帖最后由 xdragon 于 2014-3-25 11:37 编辑
  1. Sub Test()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, SQL 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.Path & "\基础表.xlsx"
  8.     Select Case Application.Version * 1
  9.     Case Is <= 11
  10.         strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
  11.     Case Is >= 12
  12.         strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
  13.     End Select

  14.     Conn.Open strConn
  15.    
  16.     SQL = "select 品牌,年份,季节,月份,分销系统代码,[店铺名称(HD)] from [表1$] where 月份=1"
  17.     Set Rst = Conn.Execute(SQL)
  18.     With Sheets("表1")
  19.         .Cells.Clear
  20.         For i = 0 To Rst.Fields.Count - 1
  21.             .Cells(1, i + 1) = Rst.Fields(i).Name
  22.         Next i
  23.         .Range("A2").CopyFromRecordset Rst
  24.         .Cells.EntireColumn.AutoFit
  25.     End With
  26.     Rst.Close
  27.     Conn.Close
  28.     Set Conn = Nothing
  29.     Set Rst = Nothing
  30. End Sub
复制代码

文件夹.zip

13.25 KB, 下载次数: 15

发表于 2014-3-25 09:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xdragon 于 2014-3-25 11:37 编辑
  1. Sub Test()
  2.     Dim Conn As Object, Rst As Object
  3.     Dim strConn As String, SQL 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.Path & "\基础表.xlsx"
  8.     Select Case Application.Version * 1
  9.     Case Is <= 11
  10.         strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
  11.     Case Is >= 12
  12.         strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
  13.     End Select

  14.     Conn.Open strConn
  15.    
  16.     SQL = "select 品牌,年份,季节,月份,分销系统代码,[店铺名称(HD)] from [表1$] where 月份=1"
  17.     Set Rst = Conn.Execute(SQL)
  18.     With Sheets("表1")
  19.         .Cells.Clear
  20.         For i = 0 To Rst.Fields.Count - 1
  21.             .Cells(1, i + 1) = Rst.Fields(i).Name
  22.         Next i
  23.         .Range("A2").CopyFromRecordset Rst
  24.         .Cells.EntireColumn.AutoFit
  25.     End With
  26.     Rst.Close
  27.     Conn.Close
  28.     Set Conn = Nothing
  29.     Set Rst = Nothing
  30. End Sub
复制代码

点评

多谢指导  发表于 2014-3-25 10:41
回复

使用道具 举报

发表于 2014-3-25 09:57 | 显示全部楼层
xdragon 发表于 2014-3-25 09:42

  • SQL = "select 品牌,年份,季节,月份,分销系统代码,[店铺名称(HD)] from [表1$] where 月份=1"
回复

使用道具 举报

发表于 2014-3-25 09:58 | 显示全部楼层
本帖最后由 xdragon 于 2014-3-25 10:01 编辑
xpw6061 发表于 2014-3-25 09:57 SQL = "select 品牌,年份,季节,月份,分销系统代码,[店铺名称(HD)] from [表1$] where 月份=1"

谢谢提醒,好像看错要求了。
回复

使用道具 举报

发表于 2014-3-25 10:00 | 显示全部楼层
  1.     SQL = "select 品牌,年份,季节,月份,分销系统代码,[店铺名称(HD)] from [表1$] where 月份=1"
复制代码
楼主,如果按照你网页的来,把17行sql语句改一下就可以了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 22:55 , Processed in 0.537004 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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