-教程最后附按键源码,欢迎新手学习-在抖音上关注“按键精灵”(抖音号:GUKOOHOT),我们将不定期发布各类办公中、生活里会用到的脚本小技巧,本篇教程小视频,已发布于抖音,欢迎观看! |
办公中经常用到excel处理数据,遇到两列数据,需要找不同项时如何用脚本来实现呢? 来,这篇小技巧也许可以帮到你!一、脚本思路
对比A列和B列数据不同,最简单的方式就是通过遍历来对比
1、获取A列第一个数据
2、遍历B列数据,用刚才获取的A列的数据逐个对比,如果在B列里没有找到相同的数据,就说明B列缺失此数据
3、遍历完B列数据,继续获取A列的第二个数据。以此类推循环下去,直到A列数据全部遍历一边
思路整理完毕,那就开始动手写了……
二、插件命令按键精灵自带没有直接很好用来操作EXCEL的命令,所以需要用到第三方的【懒人Office】插件来实现了。 - 您所在的用户组无法下载或查看附件
先来看下需要用到核心命令:
命令名称: ExcelOpen 命令功能: 打开EXCEL文档,若EXCEL已经手动打开,则本命令仅返回操作所需的索引值而不影响表格 命令参数: 【参数1】 EXCEL完整路径 【参数2(可选)】 打开方法,0不可见,1为可见。默认为0 【参数3(可选)】 打开权限密码,无密码则不需填写 【参数4(可选)】 修改权限密码,无密码则不需填写 【参数5(可选)】 设为1以只读模式打开 |
命令名称: ExcelRead 命令功能: 读取单元格内容 命令参数: 【参数1】 工作表页,可用整数型数值表示是第几个工作表标签,也可用字符串型的标签名称 【参数2】 行,整数型 【参数3】 列,整数型数值表示是第几列,或者直接使用列名称 【参数4(可选)】 索引值 ,如果只用本插件打开了一个EXCEL,则可以留空 |
三、脚本实现1、获取界面配置
需要先获取界面上一些配置,比如文档的路径起始的位置什么的,以便后续使用
- // 获取表格路径并打开表格
- Dim ExlIndex
- Dim ExlPath : ExlPath = Form1.BrowseBox1.Path
- ExlIndex = LazyOffice.ExcelOpen(ExlPath, 1)
- TracePrint LazyOffice.ExcelPath()
- Dim Start_Row1, Start_Row2, Start_Colum1, Start_Colum2
- // 单元格地址转换成行列
- Call LazyOffice.AddToLoc(Form1.InputBox2.Text, Start_Row1, Start_Colum1)
- Call LazyOffice.AddToLoc(Form1.InputBox3.Text, Start_Row2, Start_Colum2)
- TracePrint "第一列起始位置:第" & Start_Row1 & "行,第" & Start_Colum1 & "列"
- TracePrint "第二列起始位置:第" & Start_Row2 & "行,第" & Start_Colum2 & "列"
复制代码
AddToLoc 命令是用来把EXCEL的单元格地址(如:B2)转换成行和列的功能。
2、获取A\B列的最大行数- // 计算两列的最大行数
- Dim MaxCount_A : MaxCount_A = Start_Row1
- Dim MaxCount_B : MaxCount_B = Start_Row2
- Do
- If LazyOffice.ExcelRead(1, MaxCount_A, Start_Colum1, ExlIndex) <> "" Then
- MaxCount_A = MaxCount_A + 1
- Else
- Exit Do
- End If
- Loop
- TracePrint "第一列数据最大行数:" & MaxCount_A
- Do
- If LazyOffice.ExcelRead(1, MaxCount_B, Start_Colum2, ExlIndex) <> "" Then
- MaxCount_B = MaxCount_B + 1
- Else
- Exit Do
- End If
- Loop
- TracePrint "第二列数据最大行数:" & MaxCount_B
复制代码
3、遍历A列和B列,并对比其中的数据
- // 对比两列数据查找不同
- For i = Start_Row1 To MaxCount_A - 1
- Dim isExits : isExits = false
- Dim Text_A : Text_A = LazyOffice.ExcelRead(1, i, Start_Colum1, ExlIndex)
- For j = Start_Row2 To MaxCount_B - 1
- Dim Text_B : Text_B = LazyOffice.ExcelRead(1, j, Start_Colum2, ExlIndex)
- If Text_A = Text_B Then
- isExits = true
- Exit For
- End If
- Next
- If isExits = false Then
- TracePrint Text_A & " 账号在B列中不存在"
- End If
- Delay 50
- Next
复制代码
至此整个数据对比就实现了。有兴趣的小伙伴可以下载源码用于参考,希望这篇教程对你有帮助哦!完整源码下载: - 您所在的用户组无法下载或查看附件
关注按键精灵抖音号,我们将不定期发布各类办公中、生活里会用到的脚本小技巧哦~
- 您所在的用户组无法下载或查看附件