如何使2个不相邻的列一起使用?

时间:2018-10-09 02:17:53

标签: excel vba excel-vba

我正在尝试建立一个比较两列以查看它们是否相同的宏。这是功能。

Sub Compare()
Dim LastRow As Integer
LastRow = Worksheets("Sheet1").Range("A1048576").End(xlUp).Row 
For i=2 to LastRow
    If Range("A" & i).Value = Range("B" & i).Value Then
        Range("C" & i).Value = True
    Else
        Range("C" & i).Value = False
    End If
End Sub

现在,很难对A和B列进行比较,然后将True / False输出到C列中。我要做的是让用户从Excel工作表中仅选择2列,然后运行此宏,然后比较用户选择的两个列。这两个列可以彼此不相邻,例如,用户可以选择A列和K列来比较它们之间的值。

1 个答案:

答案 0 :(得分:2)

您需要检查非相邻列的.Areas属性。

Sub CompareTwo()
    dim rng as range, i as long
    set rng = intersect(selection, selection.parent.usedrange)

    if rng.areas.count>1 then
        for i=1 to rng.areas(1).rows.count
            rng.areas(2).cells(i).offset(0, 1) = cbool(rng.areas(1).cells(i).value = rng.areas(2).cells(i).value)
        next i
    else
        for i=1 to rng.rows.count
            rng.cells(i).offset(0, 2) = cbool(rng.cells(i).value = rng.cells(i).value)
        next i
    end if
End Sub

要将结果放在excel工作表末尾的新列中,请使用Find with xlPrevious和xlByColumns查找最后使用的列,然后偏移1。