我想在VBA中编写一些代码,通过将给定的表A与其他表B进行比较来检测和突出显示其中的更改。
但不知何故,我总是得到一个错误的数字1004:范围全局失败。
以下是我的部分尝试:
Option Explicit
Sub changeFinder()
...
For j = 1 To m
sht.Columns(j + 1).Insert
sht.Columns(j + 1).Insert
For i = 2 To n
sht.Cells(i, j + 1).Value = Application.VLookup(sht.Cells(i, j), sht2.Range("Columns(1):Columns(j)"), j, False)
Next i
...
Next j
End Sub
我的目标是表A:对每一列j进行循环。对于每一列j,我想在右边创建两个临时列j+1和j+2。我想用VLookup填充j+1,覆盖表B中的列1到j。后者似乎失败了。
当我不知道这些列的字母顺序名称,而只知道索引号时,有没有一种“自然”的方法可以从特定的工作表中选择列1到j+1?
提前谢谢你最好的问候朱利安
2条答案
按热度按时间imzjd6km1#
我建议您使用
Range.EntireColumn
,因为将索引号引入.Range
属性会更容易。因此,第二个
For
循环中的行变为:6yt4nkrj2#
使用
Application.VLookup
与:
Application.Match
会更好。您不想在插入的列中查找。