VBA学习笔记本(二)——两个表格数据匹配

本文介绍如何使用VBA在Excel中处理两个表格数据的匹配问题。通过创建窗体选择匹配的工作表和基准表,并指定关联字段,实现通用的数据同步功能。前提条件是两个工作表的表头名称相同但顺序不限。详细步骤包括设置控件、读取表头信息和调用匹配函数。附带示例文件下载链接。
摘要由CSDN通过智能技术生成

最近遇到很多要在两个表之间同步数据的情况,比如在sheet1 为基础表 表中有非常多的字段

姓名 学号 班级 专业 性别 年龄 籍贯
张A 001 一班 计算机 15 北京
王B 002 一班 物理 30 上海
张C 003 一班 采矿 18 北京
李E 004 一班 软件 20 北京
秦F 005 一班 财会 26 北京

而在Sheet2中却只有如下数据

姓名 学号 班级 专业 性别 年龄 籍贯
张A 001
张C 003
李E 004
秦F 005

Sheet2中的信息不全,需要补充完整,所以就需要VBA进行快速匹配,但是如果为了通用性,不仅仅局限于这个两张表中,就增加了一些功能。首先建立一个窗体增加如下控件:
在这里插入图片描述
三个下拉框分别为选取需要匹配的工作表,也就是本立中的Sheet2,另一个作为基准表,也就是本利中的Sheet1,二基准字段为两个表中匹配时作为关联的一个字段,本利中未学号,需要为唯一值。

新建一个模块,用于存放基础方法,共需建立一个窗口一个模块
在这里插入图片描述

基础功能模块中算法如下:

Function 获取表头数组(表名)
     '''本方法作用是输入表名,返回对应表中首行表头组成的数组
     '''使用了字典的作用是为了去重
     '关闭页面刷新
    Application.ScreenUpdating = False
    Sheets(表名).Select
    With Sheets(表名)
        表行数 = Sheets(表名).UsedRange.Rows.Count
        表列数 = Sheets(表名).UsedRange.Columns.Count
        表头数组 = Sheets(表名).Range(Cells(1, 1), Cells(1, 表列数)).Value
        Dim 表头字典 As Object '声明字典对象,亦可通过声明变体型变量完成声明 >>> Dim d
        Set 表头字典 = CreateObject("Scripting.Dictionary")    '声明字典
        For i = 1 To 表列数
            表头字典(Sheets(表名).Cells(1, i) 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值