利用VBA+SQL查询Excel工作表数据(基本查询)

vba ado返回集合_利用ADO,实现多数据在工作表间查询 大家好,今日继续讲解VBA数据库解决方案,今日内容是利用ADO实现两个工作表间的查询。在VBA的应用中,我一直在推崇的是VBA实现数据处理的自动化,也在不同的章节中讲如何利用VBA进行数据的自动处理。在数据处理中,查询一直是一大块的内容,在工作表中,我们可以应用的方法有:查找CTRL+F,筛选,定位,进而有工作表函数LOOKUP;如果您已经上手了VBA,查找就变的非常简单了,有多个方案可以利用,有... 阅读详情

引言

在VBA中,我们可以使用SQL语句对Excel工作表数据进行增删改查的操作。其中,查询工作表数据是最经常使用的操作。SQL查询语句可大致分为以下几类:(1)基本查询;(2)条件查询;(3)模糊查询;(4)分组查询;(5)多表查询。

本文搭建了VBA+SQL查询的模板,并汇总了SQL基本查询的实际应用,为后续学习条件查询、分组查询、多表查询等内容打好坚定的基础。

VBA+SQL查询的模板

Excel工作簿路径,工作表的查询区域,读者可根据实际情况选择。本案例的取值如下表所示:

自定义设置参数本案例取值
Excel工作簿路径D:\员工数据库.xlsx
工作表1-工资表[工资表$A3:M65536] 
工作表2-员工花名册[员工花名册$A1:I65536]

图片

[工资表$A3:M65536] 

图片

[员工花名册$A1:I65536]

注:本文的员工花名册、工资表均为虚构数据,如有雷同,纯属巧合。

我们可以打开或新建一个工作簿,在该工作簿的Visual Basic编辑器下,编写VBA代码。运行VBA代码后,会在第一张工作表前插入新工作表,用于存放【SQL查询结果】。

Sub VBA的SQL查询模板()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0';data source='D:\员工数据库.xlsx'"

    Dim sql As String
    sql = "select * from [员工花名册$A1:I65536]"
    
    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    Set rs = conn.Execute(sql)

    ActiveWorkbook.Sheets.Add before:=ActiveWorkbook.Sheets(1)
    ActiveWorkbook.Sheets(1).Name = "SQL查询结果" & Format(Now, "yyyymmddhhmmss")
    
    Dim i As Integer
    For i = 0 To rs.Fields.Count - 1
        ActiveWorkbook.Sheets(1).Cells(1, i + 1) = rs.Fields(i).Name
    Next
    ActiveWorkbook.Sheets(1).Range("a2").CopyFromRecordset rs
    
    rs.Close: Set rs = Nothing
    conn.Close: Set conn = Nothing
End Sub

SQL基本查询的实际应用

以下SQL的基本查询语句,只要将代码第7行的sql语句替换即可。

1、查询全部字段

sql = "select * from [员工花名册$A1:I65536]"

2、查询部分字段

sql = "select 工号,姓名 from [员工花名册$A1:I65536]"

3、查询不重复的记录(distinct关键字)

例:对员工的英文名进行去重查询

sql = "select distinct 英文名 from [员工花名册$A1:I65536]"

4、生成新的字段

例:根据出生日期查询生成出生年份

sql = "select 姓名,year(出生日期) as 出生年份 from [员工花名册$A1:I65536]"

5、用&连接符拼接字段

例:用“-”拼接员工的部门、学历

sql = "select 姓名,部门&'-'&学历 as 部门学历 from [员工花名册$A1:I65536]"

6、升序降序

例:按实发工资对工资表进行升序排列(默认为升序asc,降序desc)

sql = "select * from [工资表$A3:M65536] order by 实发工资"

7、top查询

例:查询年龄top5的员工信息

sql = "select top 5 * from [员工花名册$A1:I65536] order by 年龄"

Excel VBA 用 ADO 执行 SQL 查询本地表格 Excel 内置的 Jet 和 ACE OLEDB 引擎本质上是轻量级 SQL 解析器,无需连接远程数据库即可对 Excel 文件(.xls/.xlsx)执行标准 SQL 查询。其原理是将工作表视为结构化数据源,通过 ADO 接口解析区域、识别列名(HDR=YES/NO)、处理空值与日期格式,并支持 JOIN、GROUP BY、UNION ALL 等关键操作。该技术规避了 Power Query 黑盒与 Python 环境依赖,适用于财务、法务等免安装场景,特别适合批量读取、跨表关联和自动化汇总。本文聚焦 阅读详情

相关推荐

三菱FX5U运动控制(步进)

三菱FX5U脉冲定位控制,原点回归,相对定位,绝对定位,运动控制案例。

weixin_55762091的博客 1万+

利用VBA+SQL查询Excel工作表数据(条件查询)

本文将进一步汇总SQL条件查询的实际应用。这里,我们把SQL条件查询分为五部分:(1)条件运算符;(2)逻辑运算符;(3)列表查询;(4)介值查询;(5)空值查询。

VBAMatrix的博客 1886

Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件,版本号9.0.2,随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 Dynamics 365 On-Premise的安装过程,度娘一下已经有很多了,这里就不赘述了,只是...

Roger的专栏 2140

VBA-自定义面板,使用SQL查询Excel数据

自定义面板功能,打开任意一个工作簿,输入sql语句对excel进行数据查询

me_to_007的博客 6202

从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南

本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。

weixin_29162439的博客 536

电商平台大数据分析指标

一、五大关键数据分析指标 1.1活跃用户量 活跃用户量是一个基本的指标,有 DAU(日活跃用户)、WAU(周活跃用户)和 MAU(月活跃用户)三个层次; 1.2转化 转化是一个非常重要的指标,电商运营需要关注主路径、次路径甚至精细到每一个品类 / SKU 的转化率; 1.3留存 留存要从不同的时间周期上研究,包括次日留存率、3 日、7 日、30 日留存; 1.4复购 复购则要从 3 个角度去看,复购用户量、复购率和复购金额比; 1.5GMV GMV 是最重要的指标,我们的运营最终是围绕这

默主归沙的博客 4819

sql 查询上个月的数据_VBA+SQL篇(SQL查询数据及其实际应用)

3.1查询方法与示例实例一:从工作簿“数据源”工作表中提取所有的数据信息,保存到“查询表“。工号姓名部门学历工龄A001张1财务部本科20A002张2行政部硕士21A003张3销售部大专22A004张4财务部本科23A005张5行政部硕士24A006张6销售部大专25A007张7财务部本科26A008张8行政部硕士27A009张9销售部大专28A010张10财务部本科29A011张11行...

weixin_39669761的博客 2101

程序化广告ADX系统架构设计与实现

摘要: 本文详细介绍了程序化广告交易平台(ADX)的系统架构设计与实现。ADX作为连接广告主与媒体的核心平台,采用基于腾讯云和阿里云的微服务架构,包含网络基础设施、负载均衡、消息处理、核心业务服务和多级数据存储等层次。重点解析了Kafka消息队列处理高并发广告请求、Redis实时统计关键指标等核心技术实现,并提供了Java代码示例展示广告请求处理、竞价流程等核心功能。该系统通过分层设计和分布式组件,实现了高性能、高可用的程序化广告交易能力。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 768

利用VBA+SQL查询Excel工作表数据(模糊查询)

本文将继续使用VBA+SQL查询的模板,并详细介绍SQL模糊查询语句在VBA中的使用。SQL模糊查询的关键词是like、not like,通常结合通配符使用,从而实现模糊查询的功能。

VBAMatrix的博客 1499

Cadence PSpice 仿真11:电感型低通滤波器最坏情况分析仿真实战图文教程

在进行蒙特卡罗分析时会将元器件的容差考虑进去,然后通过运行多次的随机仿真,得到电路输出的一个范围。但是多数情况下设计师关注的只是电路的最坏情况是否满足设计要求。PSpice的最坏情况分析是取在容差的边界点元件参数进行仿真以计算出电路输出的最坏情况。所以如果如果电路中有10个元件的话,需要先取10个元件的标准值仿真1次,然后再分别在10个元件的容差边界处各仿真1次,然后再对仿真结果进行统计和计算,再最坏情况下再仿真1次。

fydar的博客 1944

第 2 章:PassThrough 直通滤波

通过设置某个维度(如 x、y、z 或 rgb)的取值范围,仅保留该范围内的点,从而达到**点云裁剪(裁边)**或过滤异常值的目的。所有在该范围之外的点会被移除(可选是否保留);点云中包含背景、地面或传感器噪声,需要过滤;通过 z 轴过滤,只保留桌面上方的物体;多轴组合过滤(如同时过滤 x、y、z);可用于地面剔除、车载点云预处理等场景。不支持一次过滤多个字段,可多次调用;仅处理某一层或某一区域的点云数据。原始点云中包含地面、墙面、背景等;在区域裁剪、前景提取中广泛使用;设定一个轴(如z轴);

yumeiguo的博客 337

使用VBA实现Vlookup实例-静风说

最近使用EXCEL处理数据,总是会用到2张表数据的查找匹配的功能,EXCEL提供了强大的能很好的实现我需要的功能。但是函数在用起来有点麻烦,尤其是在2张表之间切换时很容易会点错参数,而且敲击代码对非程序员很不友好,于是就想找一个VBA窗体实现Vlookup的模板。可是在网上找了好久都没能找到,只能自己动手做一个出来了。这个VBA实例很简单,也就是把Vlookup进行了改写,提供了用户输入界面的窗体。

静风说 661

【Leetcode】269.火星词典(Hard)

应用拓扑排序

明朗晨光的专栏 771

用Excel+VBA+SQL Server进行数据处理

用Excel+VBA+SQL Server进行数据处理         使用Excel+VBA+SQL Server进行数据处理是一种简单有效方法,掌握以下基础知识实现快速入门(掌握excel/vba/sqlserver各1%内容,你就能成为数据处理高手的:)):一、Excel基础知识    了解工作簿(Wor

okshy的专栏 4835

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

在EXCLE 中利用 VBA 汇总满足一定条件的几个工作表

在EXCLE 中利用 VBA 汇总满足一定条件的几个工作表我们要完成:要查询并汇总当前工作簿的所有班级工作表中的数学成绩在100分以上的所有学生记录我们要用到:1.VBA 中的ADO 和SQL;2.VBA中的循环语句;第一步:引用ADO对象库。需要引用的项目如下(如果你的机器里面是另外的版本,那么就引用该版本)Microsoft ADO Ext2

okshy的专栏 2413

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mysql查询excel表_使用SQL语句实现对Excel工作表数据进行查询的方法

SQL语句是一种标准的数据库语言,其可以在任何关系型数据库管理系统中使用。本文介绍使用SQL语句实现对Excel工作表数据进行查询的方法。1、启动Excel并打开工作簿,在这个工作簿中,工作表Sheet1放置商品信息记录,如图1所示;工作表Sheet2用于对商品记录进行查询,其结构如图2所示。图1 放置商品信息记录的工作表图2 用于商品记录查询的工作表2、打开Visual Basic编辑器,在工程...

weixin_27021789的博客 2057

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

在Excel VBA中写SQL,是一种什么体验

Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475   每每提到Excel办公自动化,我们脑海里能想到的就是公式、数据透视表、宏、VBA,这也是我们大部分人数据分析的进阶之路。当我们对于常用VBA技巧已经相当熟练后,往往会有一种“我的VBA知识够用啦”的错觉,其实那只是因为我们收到的实际需求还不够复杂和多样化。 一旦哪天碰

「 虚幻私塾」 5180

sql三表关联查询_数据查询中,三个工作表联合查询的方法

大家好,今日继续讲解VBA数据库解决方案,今日的内容是第70讲: 数据查询中,三个工作表联合查询的方法。在各种查询中,内连接,左外连接,右外连接等等,这些方法大家在工作中要多加利用,并且灵活利用,利用多了,知识就变成自己的了。今日我们讲解的是三个工作表的联合查询,也就是说三个工作表的数据要一次查询。我们还是看下面的实例讲解。实例,我们有三个工作表,工作表"数据3",工作表"数据7",工作表"数据8...

weixin_39923572的博客 4855

excel sheet限制_用VBA实现用SQL语句查询EXCEL中的数据

随着Office新版本功能越来越丰富强大,加上有各种专业的扩展,VBA这种古老的脚本语言,平时似乎派不上用场了。可是,有时候总会遇到一些“小问题”,范不上用各种牛逼的语言(比如python),这时候用VBA来搞定还很方便的。最近就遇到这样的问题,公司新上线了一个小程序商城,上架了一个试用申请活动。后台导出的订单中显示的只有一个活动名称,但库房配货的时候需要包含产品的明细。由于系统上线时间很赶,后台...

weixin_42300960的博客 1749

VBA连接SQL SERVER数据库操作Excel

VBA连接SQL SERVER数据库操作Excel。 Sub 按钮1_Click()     Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表     'Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;

Watson的专栏 3万+

vba搜索java里面的sql_使用EXCEL VBA SQL语句实现一键查询

Excel经常用的功能大部分在软件界面体现了,还有一些不常用的在菜单里面也能找到。VBA宏代码相对Excel公式来说,用的频率要少些,但是VBA有他特殊的用途。下面说一下VBA和SQL语句结合使用怎么实现表格数据一键查询,【注:SQL全称是结构化查询语言,是一种数据库查询和程序设计语言,对这方面感兴趣的朋友可以自己了解一下。】举个例子:用EXCEL VBA SQL语句查询总成绩大于290分的学生一...

weixin_36002897的博客 962

VBA excel 使用SQL

VBA excel 使用SQL Sub 按钮1_Click() Dim Conn As Object, Rst As Object Dim strConn As String, strSQL As String Dim i As Integer, PathStr As String Set Conn = CreateObject(“ADODB.Connection”) Set Rst = CreateObject(“ADODB.Recordset”) PathStr = ThisWorkbook.Ful

qq_29114677的博客 3287

access查询top10产品_Excel VBA 实战(12) - 通过SQL查询Excel工作表

自专栏开辟已经一年有余,与大家交流分享的过程促使我不断打磨自己的编程能力,总结自己在财务自动化过程中的经验与得失。得益于朋友们的留言,文章中的疏漏得以补充错误得以斧正。虽与我在专栏开篇所提到的理想中的教程还有相当大的差距,但是朝着这个目标,至少我们又前进了一小步。距离上次更新已经过去有两个月时间。其间我尝试了Office JavaScript API,编程的感觉类似于VSTO, 但是实际操作的手感...

weixin_34357209的博客 490

mysql查询两个表中的不同数据_如何实现大数据在多工作表中精准查询

大家好,今日继续讲解VBA数据库解决方案,今日讲解第40讲:利用ADO实现同一文件的多个工作表精确查询.其实这讲的内容利用我之前讲解的知识点也可以自己完成.这里只是拿出来让大家再熟悉一下EXCEL的ADO连接,及RS多次打开记录集后的查询.实例:在我的文件.xlsm中有两页"两表查询数据"和"查询数据",一些基础的数据在这两页文件中:如下截图:同时我在某页工作表中存在如下数据,要在上述的两个工作表...

weixin_39554891的博客 2574

VBA:Excel使用SQL进行查询

Sub Query() Dim Conn As Object, Rst As Object Dim strConn As String, strSQL As String Dim i As Integer, PathStr As String Set Conn = CreateObject("ADODB.Connection") Se...

a572893208的博客 2263

sql 循环查询_Excel VBA+SQL 多表应用-UNION ALL

UNION ALLSQL语句的限制1.SQL查询连接的表上限50个(最多50个表)2.查询语句字符限制38596个字符(不超过38596个)超过了会出现如下二个错误提示类型之一:1.“查询过于复杂"2."获取表格数据时发生错误"。源数据:二表连接:Sql = "SELECT 日期,姓名,产量 FROM [表1$] union all SELECT 日期,姓名,产量 FROM [表2$]"结果就不展...

weixin_39561004的博客 2231
上一篇: 利用VBA加载与取消加载宏文件
下一篇: 利用VBA+SQL查询Excel工作表数据(条件查询)
VBAMatrix
博客等级 码龄2年 363粉丝 82原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值