vba对比两个数据表(excel vba数据比较)
本文目录
- excel vba数据比较
- 如何将两个excel表里的数据做对比
- 两个数据表如何VBA实现比对
- Excel VBA 比较两个表格的不同
- 用VBA比较两个表格的不同之处
- VBA请问何如比对两个xls文件某表的数据,怎么表述
- 如何在VBA中比较两张表的中期几列,不同数据的汇成第三张表急,求!!!
- 求简单的VBA代码,将两个表格内容进行对比
excel vba数据比较
申明,我也才只学了几天,仅供参考- -所学不多,所以代码写的丑陋,练练手而已
在sheet1中插入代码:
Sub ZBT()
Dim i%, j%
.Clear
For i = 2 To Range("a99999").End(3).Row
j = Application.WorksheetFunction.CountIf(Worksheets("sheet2")., Cells(i, 1))
If j = 0 Then
Cells(i, 3) = "查无此序号"
ElseIf j 》 1 Then
Cells(i, 3) = "有多项结果"
ElseIf Cells(i, 2) 《》 Application.WorksheetFunction.VLookup(Cells(i, 1), Worksheets("sheet2")., 2, 0) Then
Cells(i, 3) = "不同"
End If
Next i
End Sub
如何将两个excel表里的数据做对比
直接用VBA最快,但要时间编写
可以用下面现成分步
1、把第一表转成序号和成品数两列
选全数据运行宏,先列后行,填2,生成两列
Excel数据如何快速排列
2、把上面成品数和表二成品数复到另一表B和C列中
A2输入序号1
在D列输入公式
D2:
B2=C2
如果=,显示TRUE,《》显示FALSE
筛选出FALSE
两个数据表如何VBA实现比对
很多人提过二个表格数据如何校对?现给出一个示例。为了方便看清除需要校对和被校对数据,这里把二个数据放在一张工作表中,第二个数据中黄色背景的数据与第一个数据不一样。
Sub text() Dim a, b, d a = b = Set d = CreateObject("Scripting.dictionary") For i = 1 To UBound(a) If Not d.exists(a(i, 2) & a(i, 3) & a(i, 4) & a(i, 5)) Then d(a(i, 2) & a(i, 3) & a(i, 4) & a(i, 5)) = "" End If Next For i = 1 To UBound(b) If d.exists(b(i, 2) & b(i, 3) & b(i, 4) & b(i, 5)) Then If Abs(a(i, 1) - b(i, 1)) 《= 2 Then Cells(i + 1, 7) = "ok" End If NextEnd Sub
Excel VBA 比较两个表格的不同
果你的数据规则的,用VBA 很快的:(请用副本测试!!,没问题再把结果保存为正本!!)
测试完成后:在sub 后 代码前加 Application.ScreenUpdating = False ,并在Msgbox 前加Application.ScreenUpdating = True 更快!!
---------------------------------------
Sub 删除A表中相同数据行()
ON ERROR GOTO ExitEnd
Application.ScreenUpdating = False
。。。(原代码部分)
Application.ScreenUpdating = True
MsgBox "完成对比啦~_~", vbExclamation
ExitEnd:
On Error Goto 0
Application.ScreenUpdating = True
End Sub
------------------
以下为不加Application.ScreenUpdating, 会慢一些:
Sub 删除A表中相同数据行()
’前提是数据要规则
’假设A表C\D\J 列与B表B\C\F列数据对比,且数据次序一样,
’即C对B D对C J对F
’思路:能引用EXCEL本身的方法不用VBA方法,这样快!!
ThisWorkbook.Activate
Dim BiaoA As Object, BiaoB As Object
Dim RowStart&, RowEndA&, RowEndB&, i& ’数据起始行与终止行
Dim GongShi$
Dim CLA As Range, CLB As Range
Set BiaoA = Sheets("表A") ’“表A”换成实际的A工作表名称
Set BiaoB = Sheets("表B") ’“表B”换成实际的B工作表名称
RowStart = 1 ’如果有表头改为2
RowEndA = BiaoA.Cells(RowS.Count, "C").End(xlUp).Row
RowEndB = BiaoB.Cells(RowS.Count, "B").End(xlUp).Row
BiaoA.Activate
Columns("A:A").Insert
GongShi = "=D" & RowStart & "&E" & RowStart & "&K" & RowStart
’因临时插入一列:C-D-J 相应变为D-E-K
Cells(RowStart, "A").Formula = GongShi
Cells(RowStart, "A").Copy
Range(Cells(RowStart, "A"), Cells(RowEndA, "A")).Select
ActiveSheet.Paste
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
BiaoB.Activate
Columns("A:A").Insert
GongShi = "=C" & RowStart & "&D" & RowStart & "&G" & RowStart
’因临时插入一列:B-C-F 相应变为C-D-G
Cells(RowStart, "A").Formula = GongShi
Cells(RowStart, "A").Copy
Range(Cells(RowStart, "A"), Cells(RowEndB, "A")).Select
ActiveSheet.Paste
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
For Each CLA In Range(BiaoA.Cells(RowStart, "A"), BiaoA.Cells(RowEndA, "A"))
For Each CLB In Range(BiaoB.Cells(RowStart, "A"), BiaoB.Cells(RowEndB, "A"))
If CLA.Value = CLB.Value Then BiaoA.RowS(CLA.Row).ClearContents
Next
Next
BiaoB.Activate
Columns("A:A").Delete
BiaoA.Activate
For i = RowEndA To RowStart Step -1
If Len(Cells(i, "A").Value) = 0 Then RowS(i).Delete
Next
Columns("A:A").Delete
Set BiaoA = Nothing
Set BiaoB = Nothing
MsgBox "完成对比啦~_~", vbExclamation
End Sub
用VBA比较两个表格的不同之处
下边用员工表来做示范,比对身份证号和姓名的操作方法也相同。
1.通过要进行对比的两个工作表或多个工作表位于不同的文件中,首先要做的就是当多个要进行对比的Excel工作表数据复制粘贴到同一个工作表中,同时做好各个工作表的命名准备,以便能正确的区分数据的来源。
2.接下来确定数据“关键字”部分,即能够唯一标识记录的关键字组合,这样就可以在进行数据对比时,能够唯一的标记一条记录。比如,如图所示的“ID”和“姓名”就可以唯一标识一条记录。
3.接下来,还要确定一下,各个工作表数据行的范围以及要进行对比的关键字所在的位置信息。如图可知,
员工基础报表中数据范围为“3至12行”,关键字所在的位置为(i行1列)和(i行2列)。
员工待遇统计表中数据范围为“3至11行”,关键字所在的位置为(i行1列)和(i行2列)。
4.所要做的就是从表1中找出表2中已经存在的记录,并且做好相应的标记,以便供查看。为此,按键盘上的快捷组合键“Alt+F11”进入VBA模式。或者切换至“开发工具”选项卡,点击“Visual Basic”按钮进入VBA环境。
有关“开发工具”选项卡的打开方法请参考栏目二部分。
5.右击“Microsoft Excel对象”,从弹出的右键菜单中选择“插入”-》“模块”项。
6.接着输入如图所示的代码:
Sub 数据对比()
Dim i As Integer
Dim j As Integer
For i = 3 To 12 ’员工基础报表数据范围
For j = 3 To 11 ’员工待遇统计表数据范围
If Sheets("员工基础报表").Cells(i, 1) = Sheets("员工待遇统计表").Cells(j, 1) Then
If Sheets("员工基础报表").Cells(i, 2) = Sheets("员工待遇统计表").Cells(j, 2) Then
Sheets("员工基础报表").Cells(i, 8) = "已存在" ’存在时进行标记
End If
End If
Next j
Next i
End Sub
7.然后点击工具栏上的“调试运行”按钮。
8.待子过程运行结束后,返回Excel工作表进行查看,就会发现对比结果已经出来啦。基于此,可以进行更近一步的数据处理操作。顺便也将另一张工作表中的记录一同展示出来,以供参考。
VBA请问何如比对两个xls文件某表的数据,怎么表述
你可在其中一个文件中加入代码,在不打开第二个文件的情况下将第二个文件的相关数据获取到第一个文件中,然后再进行比较!
使用GetObject函数来获取对指定的Excel工作表的引用,如下面的代码所示. Sub CopyData_2() Dim Wb As Workbook Dim Temp As String Application.ScreenUpdating = False Temp = ThisWorkbook.Path & "\第二个文件.xls" Set Wb = GetObject(Temp) With Wb.Sheets(1).Range("A1").CurrentRegion Range("A1").Resize(.Rows.Count, .Columns.Count) = .Value’获取第二个文件的数据从第一个文件的A1单元格开始写入。当然你可以改个位置写入! Wb.Close False End With Set Wb = Nothing Application.ScreenUpdating = True End Sub
用得上的话不要忘了加分哦!
如何在VBA中比较两张表的中期几列,不同数据的汇成第三张表急,求!!!
Private Sub CommandButton1_Click() Dim w1 As String Dim w2 As String Dim c1 As Integer Dim c2 As Integer CommandButton1.Caption = "开始" w1 = " ": w2 = " ": c1 = 0: c2 = 0 Do While w1 = " " w1 = InputBox("请输入进行比对的工作表一") If w1 = "" Then Exit Do Loop Do While c1 = 0 c1 = Val(InputBox("请输入工作表一对比列(A=1,B=2,C=3...)")) Loop Do While w2 = " " w2 = InputBox("请输入进行比对的工作表二") If w2 = "" Then Exit Do Loop Do While c2 = 0 c2 = Val(InputBox("请输入工作表二对比列(A=1,B=2,C=3...)")) Loop If w1 = "" Or w2 = "" Then Exit Sub If MsgBox("将以工作表《" & w1 & "》的第" & c1 & "列" & Chr(13) & "与工作表《" & w2 & "》的第" & c2 & "列进行对比" & Chr(13) & "是否正确?", vbQuestion + vbYesNo) = vbNo Then Exit Sub m = Worksheets(w1).UsedRange.Rows.Count n = Worksheets(w2).UsedRange.Rows.Count For i = 1 To m CommandButton1.Caption = Fix(i / m * 10000) / 100 & "%" a = Sheets(w1).Cells(i, c1) For j = 1 To n b = Sheets(w2).Cells(j, c2) If a = b Then Sheets("对比结果").Cells(i, 1) = "√" Exit For End If DoEvents Next j DoEvents Next i CommandButton1.Caption = "开始"End Sub这是以前写的用来查找两只表里某列中相同内容的,表1,表2是用来对比的数据表,表3是结果,也是命令按扭所在,对比开始时输入表1的表名,需对比第几列以及表2的表名,需对比第几列,对比结果在表3依次标记√符号,最后把表3的A列复制到表1,有勾的列就是有相同内容,没有的就是不同。我觉的这跟你的需要有些类似,应该能有帮助。
求简单的VBA代码,将两个表格内容进行对比
用公式就可以搞定了。你在备注列的第一个单元格中输入以下公式=IF(ISNA(VLOOKUP(D2,Sheet1!$D:$D,1,FALSE)),"最新号码","录入")然后复制粘贴要填写的备注单元格就可以了。其中上面公式中的Sheet1自己修改成对应的总表的Sheet名如果还有不懂,再留言。
更多文章:
getresources(怎么在Activity之外类里面用getResources())
2024年7月23日 21:29
earthquake是什么意思(earthquake是什么意思)
2024年6月23日 21:37
visual studio 2013(安装Visual Studio2013后打开闪退该怎么办)
2024年8月4日 09:20
cocos2dx rect着色(cocos2dx怎么得到一个指定layer)
2024年7月21日 18:10
ICE的对象?怎么使用java调用siebel 的webservice接口
2024年7月1日 08:31
微信代码转换翻译文字(我喜欢你微信翻译代码 微信翻译重译表白代码)
2024年7月22日 09:13
好看的winform界面(C# 做WinForm 应用程序 界面如何美化 、可以列举一些成型的技术或第三方的插件!)
2024年7月6日 16:22
0utput是什么意思中文(LED中0uT|puT是什么意思)
2024年7月21日 23:47
怎样在电脑上画表格,具体步骤是什么?如何快速学习电脑制表技术(零基础简单的电脑制表教程)
2024年7月24日 16:22
remarkable同义词(拼写比较短的英语,和excellent、outstanding是同义词(意思是杰出的英语))
2024年6月14日 18:38
vaseline是什么意思(vaseline-original是什么意思)
2024年1月9日 00:40
weblogic集群搭建(weblogic集群怎么配置ssl)
2024年7月3日 02:47