我需要对下面的代码进行一次修改。关键是此代码比较两个整列的值。我需要的是仅比较同一行中的单元格值,如果值相同,则将其复制到新列,例如:
A B C <- copy column
1 1 1
2 3
3 3 3
4 2
5 5 5
- &GT; C2和C4中的值不会被复制,因为列对应的行中没有相同的值。
Sub Compare()
Dim CompareRange As Variant, To_Be_Compared As Variant, x As Variant, y As Variant
Range("C2").Select
Selection.End(xlDown).Select
Set To_Be_Compared = Range("C2:" & Selection.Address)
Range("K2").Select
Selection.End(xlDown).Select
Set CompareRange = Range("K2:" & Selection.Address)
To_Be_Compared.Select
For Each x In Selection
For Each y In CompareRange
If x = y Then x.Offset(0, 1) = x
Next y
Next x
End Sub
希望你能理解我。
干杯, 开发。
答案 0 :(得分:0)
我建议你不要先使用select,而不先激活你的工作表,因为如果你的工作簿显示另一张工作表,你就会收到错误。
或者您可以对范围对象执行相同的操作。
dim Rng_to_Be_Compared as range
set Rng_to_Be_Compared = thisworkbook.worksheets(<worksheet name>).range("c2")
set Rng_to_Be_Compared = Rng_to_Be_Compared.resize(Rng_to_Be_Compared.end(xlDown).row - Rng_to_Be_Compared . row)
然后您可以将变量用作偏移量
dim comp_offset as integer, write_Offset as integer
write_Offset = 9
comp_offset = 8
dim cel as range
for each cel in rng_to_ba_compared.rows
if cel = cel.offset(,comp_offset) then
cel.offset(,write_offset).value = cel.value
end if
next cel
你去吧