考虑这么一个excel文件,路径为:"E:dataEdata.xlsx",样式如封面图片所示

想要在其他excel文件中,通过代码直接抓取Edata.xlsx中想要的数据,做法如下:

  • 先在Visual Basic中勾选“工具-引用-Microsoft ActiveX Data Objects”
  • 然后在下面的壳子中写入代码
Sub 抓取外部表格数据()
Dim conn As New ADODB.Connection
conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=E:dataEdata.xlsx;extended properties=""excel 12.0;HDR=YES"""conn.Close
End Sub

注意!!!以下代码都要放在这个壳子中才能生效

单个表全部抓取

Range("a2").CopyFromRecordset conn.Execute("select * from [data1$]") 

这段代码的前半段是指 【将数据抓取到当前的单元格】中
核心是后半段,conn.Execute() 是必要的函数,先不管它
select * from [data$]:* 表示将sheet:data中的所有数据(除表头)抓取出来;$跟在sheet名后面,作为excel表的标记

为了看起来简洁,可以这样定义:

Dim sql As String
sql = "select * from [data1$]"
Range("a2").CopyFromRecordset conn.Execute(sql)

只抓取某几行

如果只想获得部分数据,比如 姓名/性别 两列,代码写为:

sql = "select 姓名,性别 from [data1$]"
Range("a2").CopyFromRecordset conn.Execute(sql) 

很朴素的语言逻辑

有条件的抓取

sql = "select * from [data1$] where 性别 = '男' "
Range("a2").CopyFromRecordset conn.Execute(sql) 

合并抓取多个表

我们注意到表data1和data2是同一种格式的表格,如果同时想要两个表的内容呢?如何把他们同时抓取并放到一起呢?

sql = "select * from [data1$] union all select * from [data2$]"
Range("a2").CopyFromRecordset conn.Execute(sql) 

union all 可以把两个表上下连接起来

类VLOOKUP查找

可以注意到data3中有前两表没有的【月薪】一列,他们之间可以靠【姓名】对应起来。那么可不可以像Excel中的VLOOKUP函数一样,通过姓名把他们的月薪查找出来呢?

sql = "select * from [data1$] left join [data3$] on [data1$].姓名 = [data3$].姓名"
Range("a2").CopyFromRecordset conn.Execute(sql)

left join on 函数

结果会变成这个样子,多出现了一列姓名:

这就反应出了left join on 的特点,它是先把后面的两个表合并,然后对合并后的表做select。下图中黄色部分的格式就是上图中的样子。

如果想更好的显示,就要对代码进行修改:

sql = "select [data1$].姓名,性别,年龄,月薪  from [data1$] left join [data3$] on [data1$].姓名 = [data3$].姓名"
Range("a2").CopyFromRecordset conn.Execute(sql)

把三个表结合到一起

先UNION ALL 再 LEFT JOIN ON

sql = "select a.姓名,性别,年龄,月薪 from (select * from [data1$] union all select * from [data2$])a left join [data3$] on a.姓名=[data3$].姓名"
Range("a2").CopyFromRecordset conn.Execute(sql)

这段代码很长,让我们来捋一捋:

首先是将data1和data2(通过union all 方法) 合并成一个表,用a表示
然后将表a和data3(通过left join on方法)合并成一个表,根据姓名加入对应的月薪
对最终合并成的表提取 姓名,性别,年龄,月薪 这4列数据

代码的逻辑如上图所示,黄色表示【data1】和【data2】union all之后的【表a】,黄色加蓝色就是【表a】和【data3】left join on后的表,select函数直接作用在这个表上。

得到结果为:

php用wordanalysis抓取姓名_利用vba查询/抓取 外部数据相关推荐

  1. oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...

    大家好,今日继续给大家讲解VBA数据库解决方案的第21讲,如何利用VBA代码在已有的数据表中删除,添加,修改字段.这个内容是操作数据库的一项必修的内容,还望大家在实际工作中多利用,所以这节的知识,对于 ...

  2. 关于fi dd ler 手机抓包 网卡地址地址_利用无线路由器如何抓取手机网络数据包【详细介绍】...

    当用户运用手机访问网络时,手机在不断接受与发送数据包,而这些数据包中包含了大量的用户信息,包括各种账号信息.聊天信息.发送接收文件.邮件.浏览的网页等.虽然很多信息是加密传输的,但还是会有大量信息是明 ...

  3. python为啥爬取数据会有重复_利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?...

    原标题:利用Python来爬取"吃鸡"数据,为什么别人能吃鸡? 首先,神装镇楼 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波 ...

  4. python爬取率_利用Python爬取OPGG上英雄联盟英雄胜率及选取率信息

    一.分析网站内容 由网站界面可以看出,右侧有英雄的详细信息,以Garen为例,胜率为53.84%,选取率为16.99%,常用位置为上单 现对网页源代码进行分析(右键鼠标在菜单中即可找到查看网页源代码) ...

  5. sql 发送邮件网络附件_利用VBA发送附件电子邮件

    大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...

  6. vba 添加outlook 签名_利用VBA发送附件电子邮件

    大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...

  7. python生成文章标题_利用简书首页文章标题数据生成词云

    原标题:利用简书首页文章标题数据生成词云 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! ...

  8. igs无法分配驱动器映射表_利用VBA获取驱动器的信息

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第三节"利用VBA获取文件的信息和属性",这 ...

  9. vba monthview控件64位_利用VBA获取文件的信息和属性

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十七个专题"文件及文件夹信息的获取及操作"的第三节"利用VBA获取文件的信息和属性",这 ...

最新文章

  1. 院士:人一生有两个阶段最能逼出成果,一是拿博士学位,二是评正教授
  2. python爬虫模块取cookie_Python爬虫之cookie的获取、保存和使用【新手必学】
  3. Oracle数据库多结点相关配置
  4. Ubuntu 安装Jdk(apt-get)
  5. flutter UiKitView 加载ios 原生view
  6. C#中的数组和C++中数组的区别
  7. php如何将读取到的mysql内容按发布的日期分割显示_php如何读取文件夹目录里的文件并按照日期,大小,名称排序...
  8. 稳定的货源社区源码分享丨新版云乐购免费开源
  9. RHadoop(一)
  10. 数学分析(卓里奇)学习笔记001
  11. C语言基础期末复习题(带详解答案)
  12. pt100热电阻计算公式C语言,pt100计算公式,PT100实际应用中的两种形式
  13. m序列的产生原理及其性质
  14. [计算机系统-01] 计算机系统漫游
  15. 关于一起疑似脚本注入安全事件过程记录
  16. 数据流通利用 | 数据产权研究综述
  17. Cisco Encrypted Traffic Analysis(ETA)
  18. 苹果企业签名独立、非独立什么意思?
  19. Joplin 软件转换中文
  20. 拓扑结构计算机网络结构,计算机网络的常见的七种拓扑结构

热门文章

  1. 5分钟k线数据 存储_成功率极高的“分时K线战法”:15分钟K线战法+30分钟K线战法...
  2. 收发一体超声波测距离传感器模块_芜湖低功耗超声波液位计物位计设备排名
  3. 超实用!18 个开箱即用的 Shell 脚本,拿好了~
  4. 这就是库克的重大计划?英特尔新CEO帕特誓言:CPU必须要比苹果好!
  5. 真正厉害的人,早就戒掉了“贫穷思维”
  6. 单身狗救星!电子科大校长为理工科男脱单提建议
  7. 攻占CNS!4篇Science+2篇Nature+1篇Cell,2019年内地学者开门红
  8. PHP脚本调用命令获取实时输出
  9. IO对象流(序列化和反序列化)
  10. Docker 使用Dockerfile构建自己的docker服务(三)