excel - 如何解决:比较两张纸并输出匹配代码?
问题描述
我有一个当前代码,应该将 sheet1 中的表与 sheet2 进行比较,并在另一张表(sheet3)中输出匹配项。尝试运行代码时,我收到“类型不匹配”错误”,我不确定出了什么问题,也不知道如何修复它......
Sub CompareSolve()
Dim i As Long
Dim j As Long
Dim n As Long
Dim ar As Variant
ar = Sheet2.Cells(10, 1).CurrentRegion.Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For i = 2 To UBound(ar, 1)
.Item(ar(i, 1)) = Empty
Next
ar = Sheet1.Cells(10, 1).CurrentRegion.Value
n = 1
For i = 2 To UBound(ar, 1)
If .exists(ar(i, 1)) Then
n = n + 1
For j = 1 To UBound(ar, 2)
ar(n, j) = ar(i, j)
Next j
End If
Next i
End With
Sheet3.Cells(10, 8).Resize(n, UBound(ar, 2)).Value = ar
End Sub
这两张桌子在这两张纸上的位置相同
解决方案
得益于@Tom 的帮助,修复了代码
Dim i As Long
Dim j As Long
Dim n As Long
Dim ar As Variant
ar = Sheet2.Cells(10, 1).CurrentRegion.Value
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For i = 2 To UBound(ar, 1)
.Item(ar(i, 1)) = Empty
Next
ar = Sheet1.Cells(10, 1).CurrentRegion.Value
n = 1
For i = 2 To UBound(ar, 1)
If .exists(ar(i, 1)) Then
n = n + 1
For j = 1 To UBound(ar, 2)
ar(n, j) = ar(i, j)
Next j
End If
Next i
End With
Sheet3.Cells(10, 8).Resize(n, UBound(ar, 2)).Value = ar
End Sub```
推荐阅读
- python - 在队列不为空时停止 python 线程
- c++ - QScrollArea - 通过保持纵横比调整内容小部件的大小
- r - 如何替换包含特定字符串 r 的列名
- apache-spark - Spark Driver 监督工作不可靠
- spring-boot - 如何通过 JMX 将 SpringBoot 应用程序中的 Kafka 指标公开给 Prometheus?
- pandas - 根据最近的日期时间条件删除重复项
- arrays - 检查 Swift 中的可选数组是否为空
- django - 如何在 Django 中序列化具有多个对象的 MethodField?
- reactjs - 存储的 setInterval 在基于 React JS 类的组件中返回为未定义
- java - 如何替换JSON的最后一个索引项