比较两列并将值复制到同一行中的另一个单元格

时间:2014-10-21 12:38:43

标签: excel vba compare

我需要对下面的代码进行一次修改。关键是此代码比较两个整列的值。我需要的是仅比较同一行中的单元格值,如果值相同,则将其复制到新列,例如:

   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
希望你能理解我。

干杯, 开发。

1 个答案:

答案 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

你去吧