当前位置: 传客网 > 使用EXCEL VBA 与SQL查询语句转换表格

使用EXCEL VBA 与SQL查询语句转换表格

2017-01-08 作者:寻近去远


经常我们需要将EXCEL表格的一列转换为行标题,尽管使用数据透视表可以完成这一转换,但是,由于数据透视表会将相同值做汇总处理,将不同值以新行的方式存放数据。这对于我们需要将单据号及备注同时显示做参考,但对单据号或备注是否对应并不在意,数据透视表就显得心有余而力不足了。

下面我们介绍使用EXCEL VBA以及在VBA里使用简单的SQL查询来实现。下面的语句从上倒下包含:
1. 使用ADODB对EXCEL的基础数据进行联机
2. 对将做为行标题的列以及目标列做连续序号处理
3. 编写SQL语句(注意与SQL SERVER 的有稍许区别)
4. 打开ADODB连接,及数据集
5. 将整理后的数据复制到新表格


Sub PopulateBasicData()

'Application.ScreenUpdating = False
Application.Volatile

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strFile As String
Dim strConn As String
Dim strSQL As String
Dim i As Integer


strFile = Me.FullName
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")


Sheets("RawData").Activate

For i = 2 To Me.Sheets("RawData").UsedRange.Rows.Count

    Cells(i, 9).Value = Application.WorksheetFunction.CountIfs(Range(Cells(2, 1), Cells(i, 1)), Cells(i, 1), Range(Cells(2, 2), Cells(i, 2)), Cells(i, 2))

Next i
Me.Save

strSQL = "SELECT DISTINCT m.物料, m.Seq, s1.物料凭证, s1.过帐日期, s1.数量, s2.交货单, s2.过帐日期, s2.数量,s3.参考凭证, s3.过帐日期, s3.数量,s4.参考凭证, s4.过帐日期, s4.数量 FROM (((([RawData] AS m LEFT JOIN (SELECT 物料,Seq, 物料凭证, 过帐日期, 数量 FROM [RawData] WHERE 移动类型=541 )  AS s1 ON (m.Seq = s1.seq) AND (m.物料 = s1.物料)) LEFT JOIN (SELECT 物料,Seq, 交货单, 过帐日期, 数量 FROM [RawData] WHERE 移动类型=103 )  AS s2 ON (m.Seq = s2.seq) AND (m.物料 = s2.物料)) left join (SELECT 物料,Seq, 参考凭证, 过帐日期, 数量 FROM [RawData] WHERE 移动类型=104) s3 ON (m.Seq = s3.seq) AND (m.物料 = s3.物料)) left join (SELECT 物料,Seq, 参考凭证, 过帐日期, 数量 FROM [RawData] WHERE 移动类型=105) s4 ON (m.Seq = s4.seq) AND (m.物料 = s4.物料)) WHERE m.seq > 0"


cn.Open strConn
rs.Open strSQL, cn

Sheets("RawData").Select
Range("I2:I20000").ClearContents


Application.ScreenUpdating = True
Sheets("Reformat").Activate

Range("A2:Z20000").ClearContents
Range("A2").CopyFromRecordset rs

rs.Close
cn.Close

Me.Save

MsgBox "Done"
End Sub



相关推荐

  • Java教程—Hibernate、hql语句和QBC查询

    通过上面HQL语句我们可以看出,这时查询出来的就是一个个student对象了,而不是一个个游离的数据了,这里一定要注意HQL语句的写法。这种写法在sql语句中肯定是不支持的。java教程HQL语句进行内连接查询:fromTeamtjoint

  • SQL语句提高查询性能的关键[zz]

    SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下。通过优化SQL语句提高查询性能的关键是:根据实际需求情况,建立合适的索引;&#

  • 一条SQL语句实现查询成绩-60、60~80、+80的人数的方法

    现在在实验室,总结一下上午学到的一个SQL方法。下面我创建一个数据表:SELECT*FROM`students`;可以看到数据表中存在六条数据,如果使用传统的查询方法,我们需要三条SQL语句,分别是:selectcount(*)fromst

  • AVI Fairy AVI MP3/MP4转换精灵 5.0

    AVIFairyAVIMP3/MP4转换精灵5.0AVI转换精灵是国内最优秀实用的AVI视频转换工具,它支持把avi、mpg、mpeg、rm、rmvb、wmv、dat转换为AVI格式。采用AVIConverterV5.0为核心,广泛适用于支

  • 黑马程序员_SQL和ADO.net篇4之数据排序,group by ,having 语句,以及SQL语句优先级

     -------WindowsPhone7手机开发、.Net培训、期待与您交流!-------一.数据排序================================================orderby句子要放到where后面

  • ADS8681IRUMT 模数转换器 黄云艳13632767652

    ADS8681IRUMTTI新产品250PCS一个包装TexasInstrumentsADS868116位SAR模数转换器(ADC)是一款基于16位逐次逼近(SAR)模数转换器的集成式数据采集系统。该器件的工作吞吐量达1MSPS。该器件具有

  • DAC39J82IAAV  数模转换器黄云艳13632767652

    DAC39J82IAAV数模转换器-DACDual-Chn4-Output16-Bit2.8GSPS工厂交货期6周受限产品单价在120美金左右。1Features3DescriptionTheDAC39J82isaverylowpower,

  • PASCAL精要——第五章 语句  zz

    第五章语句如果说数据类型是Pascal编程的一个基础,那么另一个则是语句。编程语言的语句主要由关键字和操作指令组成。语句常放在过程或函数中,就象我们将在下一章中看到的那样。现在,我们集中讲解最基本的编程语句。简单语句和复合语句Pascal简

  • 转 ORCLE-Select 语句执行顺序以及如何提高Oracle 基本查询效率

    源地址:http://blog.itpub.net/24627116/viewspace-754502今天把这几天做的练习复习了一下,不知道自己写得代码执行的效率如何以及要如何提高,于是乎上网开始研究一些材料,现整理如下:首先,要了解在Or

  • Delphi程序设计第七讲—— 语句操作

    语句是执行具体操作的指令.语句有很多种;如注释语句,条件语句,循环语句,多分支语句等.例如:BUTTON1.CAPTION:=’确定’;每个语句必须以分号结束.1.赋值语句赋值语句是DELPHI程序中最常用的语句,一般用于对变量或给对象的属

  • PR查询- 收录/反链查询- 死链接检测/全站PR查

    网站信息查询:ALEXA排名查询-GooglePR查询-收录/反链查询-死链接检测/全站PR查询-网页GZIP压缩检测-PR输出值查询搜索优化查询:长尾关键字友情链接检测关键词排名查询关键词密度查询搜索引擎模拟网页META信息百度收录百度权

  • 各种视频格式转换软件 3gp转换器 万能转换器

    FLV视频转换器4.62009-3-47.14MB0 《FLV视频转换器》是一款功能强大的FLV视频转换工具,它可以帮助您将几乎所有流行的视频格式,如:RM、RMVB、VOB、DAT、VCD、DVD、SVCD、...运行平台:Win9X/W

  • 编写高效 SQL 语句的最佳实践(1)

    序言SQL语言是一种强大而且灵活的语言,在使用SQL语言来执行某个关系查询的时候,用户可以写出很多不同的SQL语句来获取相同的结果。也就是说,语法(syntactical)不同的SQL语句,有可能在语义(semantical)上是完全相同的

  • 你开启了 运行 SQL 语句 功能。建议你只有在十分必要的时候才开启此它。请修改 config/config_global.p

    Discuz后台提醒:你开启了运行SQL语句功能,建议你只有在十分必要的时候才开启此它,请修改config/config_global.php修改方法:1、打开config/config_global.php2、查找$_config['ad

  • 嘉兴学院 考试成绩查询器 (V4.0.0)

    新版已经发布到:mewchen.com免密码成绩查询:这只需要姓名和学号两个信息,不需要密码。(早期的只需要学号查询的,学校已经关闭入口)特色功能:1.输入学号和姓名后,智能判断出本学期的成绩,不需要手动点击;2.支持打开程序自动查询设定好

  • 万能转换开关 万能转换开关接线图

      万能转换开关,就是可以把不同电流的家电用器转换成其能适用的电压和电流下正常工作。下面小编为您详细介绍一下万能转换开关以及接线图。  万能转换开关主要适用于交流50Hz、额定工作电压380V及以下、直流压220V及以下,额定电流至160A

  • 蓝诚家居专营店-新英 XY-211A 变压器 220V转110V 功率300W 国内用 电压转换器

    蓝诚家居专营店-新英XY-211A变压器220V转110V功率300W国内用电压转换器商品【新英XY-211A变压器220V转110V功率300W国内用电压转换器】是来自于天猫店铺蓝诚家居专营店所经营的商品,其蓝诚家居专营店主要经营的商品有

  • 关于 Java 中 finally 语句块的深度辨析

    可不能小看这个简单的finally,看似简单的问题背后,却隐藏了无数的玄机。接下来我就带您一步一步的揭开这个finally的神秘面纱。问题分析首先来问大家一个问题:finally语句块一定会执行吗?很多人都认为finally语句块是肯定要执

  • 汇总:常用 SQL 语句大全

      汇总:常用SQl语句大全。  语句功能  --数据操作  SELECT--从数据库表中检索数据行和列  INSERT--向数据库表添加新数据行  DELETE--从数据库表中删除数据行  UPDATE--更新数据库表中的数据  --数据

  • 撸爸爸豪杰同盟小助足 您身边的查询好同陪

    撸爸爸小助足专为喜悲豪杰同盟的您而筹办,是真正真用的LOL小助足。撸爸爸小助足包含战争力查询、死日查询、潜躲分查询战国服第一先天。正在那您可以或许尽兴的查阅您的战争力战账号死日状况,呼lol韩服下载唤师死日那天可是有皮肤劣惠行动呢,遗记本人

返回
顶部