我尝试使用For Each
循环检查两个单元格范围,查找匹配值。
我的问题是For Each
循环似乎在迭代单元格的值(即John Doe,Mark Jones等)而不是范围值(即D3,D4等)。这似乎与我读过的所有文件背道而驰。
lastRowRads = Worksheets("Rads").Range("D3").End(xlDown).Row
lastRowData = Worksheets("Data").Range("D5").End(xlDown).Row
ReferenceRange = "D5:D" & lastRowData
TestRange = "D3:D" & lastRowRads
For Each rcell In Worksheets("Data").Range(ReferenceRange).Cells
For Each tcell In Worksheets("Rads").Range(TestRange).Cells
If rcell.Value = tcell.Value Then
Worksheets("Data").Range(rcell).Offset(0, -1).Value = Worksheets("Rads").Range(tcell).Value
End If
Next tcell
Next rcell
我得到的错误是"运行时错误' 1004:应用程序定义或对象定义的错误"并且调试器突出显示If...Then
语句中的语句。我的猜测是,它不接受rcell
和tcell
作为范围引用。
我已使用MsgBox
进行了一些问题排查,以了解tcell
和rcell
在循环过程中的值是什么,它们应该是什么是rcell.Value
和tcell.Value
。我在循环之前尝试将它们定义为Dim tcell As Range
和Dim rcell As Range
,但这并没有解决问题。
答案 0 :(得分:2)
更改此行:
Worksheets("Data").Range(rcell).Offset(0, -1).Value = Worksheets("Rads").Range(tcell).Value
要:
rcell.Offset(0, -1).Value = tcell.Value
它们是范围变量,因此已经具有其中固有的表格和范围。