excel表格_excel函数公式大全_execl从入门到精通
秒懂快速处理excel数据绝技之按钮操作法2024-01-31 22:47:19
Excel表格使我们办公常用的软件之一,各种报表数据通过Excel表格能够高效快速的显示出来,同时我们可以通过excel自带的VBA宏编程语言对一些重复的操作进行快速处理,既提高了处理速度,又不易出错。但是,如果我们每次此运行VBA程序的时候都需要进入编译界面的话,这样会大大的降低我们处理的速度,特别是当我们编写的VBA程序不止一个时,会浪费很多的时间。今天我们就一起看一下在excel中如何通过按钮操作,快速的运行宏编译语言。
excel表格中大量繁杂的数据
一个一个比对真的很麻烦1、首先我们打开要处理数据的excel表格后,找到并单击“开发工具”进入开发菜单界面,如下图(这里以office2007为例,其他版本的excel类似):
打开“开发工具菜单”2、 进入开发工具菜单后,找到并单击“插入”按钮,然后在表单控件中选择第一个图标(按钮),如下图:
打开插件3、 在excel的编辑区选择一个区域放置该按钮,然后为该按钮选择对应的宏或新建宏代码(注意:需要先将宏代码编译到VB代码中这里才有得选,具体如何编写VB代码,在前面文章中有介绍,这里就不再重复),如下图:
根据需要选择对应的宏代码4、如需要添加其他按钮则重复上述1-3步骤,下图是本地根据自身需要创建的一个加载excel数据到当前表格后进行比较数据是否相同的实例,可供参考:
将数据导入当前表格并做比对示例导入数据部分代码如下(以标准数据的导入为例):
Sub 打开标准数据表()
Dim mypath$, myname$, rng As Range, myr$ '定义变量
Application.ScreenUpdating = True '显示屏幕计算过程
Sheet1.Activate
[A1:H500].Clear '将表格中的原油数据清空
mypath = ThisWorkbook.path & "\" '设置模板数据的路径,这里以当前的EXCEL表格作为打开路径
myname = "标准数据.xlsx" '要打开复制的excel表格名称
With GetObject(mypath & myname) '获取要复制的表格对象 '
myr = .Sheets(1).[A1:H500].Row '选取当前表格中的sheet1的A1-H500
Set rng = .Sheets(1).Range("A1:H500")
rng.Copy '复制rng数据
Sheets("标准数据").Range("A1:H500").PasteSpecial '把复制的数据粘贴到当前表格中的“标准数据”的A1-H500
.Close True '关闭模板数据表格
End With
Application.ScreenUpdating = True '打开屏幕显示
End Sub
数据比对部分代码如下(这部分注释可以参考上两次关于使用编程思维处理excel数据的发文,由于分别有标准数据和BOM1对比、标准数据和BOM2对比,所以这里有两个类似的函数):
Sub 数据对比()
Sheets("标准数据").Select
Range("A1:K500").Select
Selection.Copy
Sheets("BOM1比对结果").Select
Range("A1:K500").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Dim i As Integer
Dim j As Integer
For i = 2 To 500 '2到500行
For j = 2 To 20 '2到20列
Sheets("BOM1导出不匹配项").Cells(i, j).Clear
If (Sheets("标准数据").Cells(i, j).Text) <> (Sheets("BOM1数据").Cells(i, j).Text) Then '两个表格数据做对比
Sheets("BOM1比对结果").Cells(i, j) = (Sheets("标准数据").Cells(i, j).Text) + "和" + (Sheets("BOM1数据").Cells(i, j).Text) + "数值不匹配" '存在时进行标记,并在18列写已存在"
Sheets("BOM1比对结果").Cells(i, j).Interior.Color = 35500
Sheets("BOM1导出不匹配项").Cells(i, j) = (Sheets("标准数据").Cells(i, j).Text) + "和" + (Sheets("BOM1数据").Cells(i, j).Text) + "数值不匹配"
Sheets("BOM1导出不匹配项").Cells(i, j).Interior.Color = 65535
End If
Next j
Next i
End Sub
Sub 数据比较2()
Sheets("标准数据").Select
Range("A1:K500").Select
Selection.Copy
Sheets("BOM2比对结果").Select
Range("A1:K500").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Dim i As Integer
Dim j As Integer
For i = 2 To 500 '2到500行
For j = 2 To 20 '2到20列
Sheets("BOM2导出不匹配项").Cells(i, j).Clear
If (Sheets("标准数据").Cells(i, j).Text) <> (Sheets("BOM1数据").Cells(i, j).Text) Then '两个表格数据做对比
Sheets("BOM2比对结果").Cells(i, j) = (Sheets("标准数据").Cells(i, j).Text) + "和" + (Sheets("BOM1数据").Cells(i, j).Text) + "数值不匹配" '存在时进行标记,并在18列写已存在"
Sheets("BOM2比对结果").Cells(i, j).Interior.Color = 35500
Sheets("BOM2导出不匹配项").Cells(i, j) = (Sheets("标准数据").Cells(i, j).Text) + "和" + (Sheets("BOM1数据").Cells(i, j).Text) + "数值不匹配"
Sheets("BOM2导出不匹配项").Cells(i, j).Interior.Color = 21000
End If
Next j
Next i
End Sub
下图是将对应的数据导入后的处理结果:
单独导出不匹配项
比对后结果对此,小伙伴们有什么意见或建议呢?欢迎留言讨论!喜欢的话就帮忙点个赞关注一下吧,谢谢大家,祝大家生活愉快!
标签: excel做一个按钮刷新数据