本文介绍如何使用VBA在Excel中处理两个表格数据的匹配问题。通过创建窗体选择匹配的工作表和基准表,并指定关联字段,实现通用的数据同步功能。前提条件是两个工作表的表头名称相同但顺序不限。详细步骤包括设置控件、读取表头信息和调用匹配函数。附带示例文件下载链接。
摘要由CSDN通过智能技术生成
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
Set 表头字典 = CreateObject("Scripting.Dictionary")
For i = 1 To 表列数
表头字典(Sheets(表名).Cells(1, i)
Dim i As Integer ''遍历第一个
表格
Dim j As Integer ''遍历第
二
个
表格
For i = 2 To 100 ''第一个
表格
的行数
For j = 2 To 7585 ''第
二
个
表格
的行数
If
Sheets
("Sheet1").Cells(i,
'双
匹配
查询,和VLookUp函数类似,不同的是可以
匹配
2个字段KeyCell
匹配
数据
的第一列,MatchCell
匹配
数据
的第MatchIndex 列,如果2个都相等则返回
数据
区域第ReturnIndex列的值
'KeyCell:第一列
匹配
的单元格
'MatchCell:第
二
个
匹配
项目,
匹配
第MatchIndex列
'Zone :
数据
区域
'MatchIndex:第
二
项
匹配
的列序号
'ReturnIndex:返回值的列序号
Function VlookMatch(KeyCell As Range, Mat
① 如果正确安装了WPS,但是却被扫描没有安装,就进行下面的操作。
打开C:\Windows\SysWOW64这个目录,并找到EdpUninstallSoftware.crc这个文件,删除它。重启计算机。
② 如果上述操作无法提取到WPS的安装,就卸载WPS,重新启动再安装WPS。
③ 如果上述措施还是不行,就在磁盘上搜索uninst
Sub
小龙虾()
Dim sheetCnt As Integer, zongbiaorow As Integer, biaorow As Integer, i As Integer, j As Integer, k As Integer, p As Integer
Dim s As String, target As String
Dim ww As Range
sheetname = ActiveWindow.ActiveSheet.Name '当前
表格
名
匹配
sheet页:在A/B列粘贴需要打标的源
数据
,然后在词库页面配置好关键词,最后在H列选择
匹配
模式,即可在C列得到达标结果
词库sheet页:按识别逻辑,在B/(F&G)/(K&L)列设置需识别的关键词,然后在C/H/M列
匹配
上想标记的词句,即完成词库配置
二
、代码详情
1. 单列
匹配
Sub
单列
匹配
()
Dim tiaojian1 As Range
Dim tiaojian2 As Range
Dim neirong1 As Range
Dim neiro
Set dbsheet1 = ThisWorkbook.
Sheets
("Sheet1") ---获取第一个页签
Set dbsheet2 = ThisWorkbook.
Sheets
("Sheet2") ---获取第
二
个页签
lr1 = dbsheet1.Cells(Rows.Count, 1).End(xlUp).Row ---获...
Dim
arr
, h&, l%, i&, j&, n&
arr
= Range("a1").
Current
Region.Value
h = UBound(
arr
): l = UBound(
arr
, 2)
ReDim brr(1 To h, 1 To l)
For i = 1 To h - 1
1. 什么是
VBA
?
Visual Basic for Applications(简称
VBA
)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而
VBA
提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。
VBA
易于
学习
掌握,可以使用宏记录器记录用户的各种操作并将其转换为
VBA
程序代码。这样用户可以容易地将日常工作转换为
VBA
程序代码,使工作自动化。
VBA
百度百科
VBA
可以通过使用循环和条件语句来
匹配
两个
数据
表。首先,我们可以使用
VBA
打开
两个
数据
表,并将它们存储在工作簿或工作表中。然后,我们可以使用循环遍历其中一个
数据
表中的每一行,并在另一个
数据
表中查找
匹配
的
数据
。
在循环的每一步,我们可以使用条件语句来比较
两个
数据
表中的
数据
,如果找到
匹配
的
数据
,我们可以执行相应的操作,比如将
匹配
的
数据
复制到一个新的
数据
表中,或者对
匹配
的
数据
进行其他处理。
在进行
匹配
之前,我们可能需要先对
数据
进行排序或者筛选,以便能够更快地找到
匹配
的
数据
。我们也可以使用
VBA
的内置函数来进行
数据
匹配
,比如使用VLOOKUP函数或者使用自定义的
匹配
算法。
最后,我们可以将
匹配
的结果输出到一个新的
数据
表中,或者直接在原始
数据
表中进行修改。通过使用
VBA
,我们可以更快速和更灵活地进行
数据
匹配
,并且可以根据具体的需求进行定制化的
匹配
操作。
VBA
的强大功能可以为
数据
匹配
提供很大的帮助。