vba - 比较两个 Excel 工作表并在新工作表中显示新数据
问题描述
我在这个平台上讨论的所有主题中寻找我的问题的答案,例如比较两个工作表并找到差异,宏来比较两个工作表并突出显示差异等等......但我没有找到我想要的东西。
我的问题是;是否有可能比较两个具有不同布局的 Excel 工作表,如下所示?我愿意将历史工作表与新工作表进行比较,并在第三个工作表中显示历史记录中不存在的新工作表上的内容,例如:
我希望你能理解我的问题,并能够在这个话题上帮助我。我已经有一个比较两个工作表并显示差异的代码,但这还不足以解决我的问题。
Option Explicit
Sub CompareIt()
Dim ar As Variant
Dim arr As Variant
Dim Var As Variant
Dim v()
Dim i As Long
Dim n As Long
Dim j As Long
Dim str As String
ar = Sheet1.Cells(10, 1).CurrentRegion.Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
ReDim v(1 To UBound(ar, 2))
For i = 2 To UBound(ar, 1)
For n = 1 To UBound(ar, 2)
str = str & Chr(2) & ar(i, n)
v(n) = ar(i, n)
Next
.Item(str) = v: str = ""
Next
ar = Sheet2.Cells(10, 1).CurrentRegion.Resize(, UBound(v)).Value
For i = 2 To UBound(ar, 1)
For n = 1 To UBound(ar, 2)
str = str & Chr(2) & ar(i, n)
v(n) = ar(i, n)
Next
If .exists(str) Then
.Item(str) = Empty
Else
.Item(str) = v
End If
str = ""
Next
For Each arr In .keys
If IsEmpty(.Item(arr)) Then .Remove arr
Next
Var = .items: j = .Count
End With
With Sheet3.Range("a1").Resize(, UBound(ar, 2))
.CurrentRegion.ClearContents
.Value = ar
If j > 0 Then
.Offset(1).Resize(j).Value = Application.Transpose(Application.Transpose(Var))
End If
End With
End Sub
提前致谢
解决方案
推荐阅读
- angular - 对所有行的每一列求和?
- python - Pandas 时间序列每 15 分钟分组一次
- java - wildfly 无法定义类 java.lang.UnsupportedClassVersionError 加上 Mysql 模块不起作用
- c++ - 将运行程序的用户名与登录到 Windows 的用户名进行比较
- scikit-learn - 如何实现 KNN 来估算 sklearn 管道中的分类特征
- kubernetes - Rancher 集群监控 + Prometheus Operator?
- python - 比较两个文件夹(输入和输出文件夹)中的 xml,并使用 python 显示每次比较的差异
- java - mockito.veify() 给出错误的调用计数
- sql-server - SQL Server XML 查询值到列
- python - 如何使用 setattr 定义实例的自定义函数