I am trying to build a macro that compares two columns to see whether or not they are the same. This is the function.

```
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
```

Right now it is hard coded to compare column A and B then output True/False into column C. What I want to do is have the user select ONLY 2 columns from their excel sheet and then run this macro which then compares the two selected columns by the user. These 2 columns can be non-adjacent to each other, so for example the user can select column A and column K to compare the values between them.

You need to check the .Areas property of non adjacent columns.

```
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
```

To put the results *in a new column at the end of the excel sheet*, use Find with xlPrevious and xlByColumns to locate the last used column then offset 1.

Tags: excelexcel