I have two columns in Excel that I want to compare and find the differences between them.
Suppose:
- Col A has 50 numbers, i.e. 0511234567
- Col B has 100 numbers in the same format
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityI have two columns in Excel that I want to compare and find the differences between them.
Suppose:
Highlight column A. Click Conditional Formatting > Create New Rule > Use this formula to determine which cells to format > Enter the ff. formula:
=countif($B:$B, $A1)
Click the Format button and change the Font color to something you like.
Repeat the same for column B, except use this formula and try another font color.
=countif($A:$A, $B1)
In column C, enter the ff. formula into the first cell and then copy it down.
=if(countif($B:$B, $A1)<>0, "-", "Not in B")
In column D, enter the ff. formula into the first cell and then copy it down.
=if(countif($A:$A, $B1)<>0, "-", "Not in A")
Both of these should help you visualize which items are missing from the other column.
$B:$B
to refer to the entire column B
does not work. Instead use $B$1:$B$1048576
(where 1048576 is the highest-numbered row). Note $
in front of the numbers (so-called absolute references) - this makes it work as expected for operations like Fill Down (referred here to as "copy it down") or Fill Up.
– Peter Mortensen
Sep 21 '16 at 19:26
Microsoft has an article detailing how to find duplicates in two columns. It can be changed easily enough to find unique items in each column.
For example if you want Col C to show entries unique to Col A, and Col D to show entries unique to Col B:
A B C D
1 3 =IF(ISERROR(MATCH(A1,$B$1:$B$5,0)),A1,"") =IF(ISERROR(MATCH(B1,$A$1:$A$5,0)),B1,"")
2 5 (fill down) (fill down)
3 8 .. ..
4 2 .. ..
5 0 .. ..
Here's the formula that you are looking for:
=IF(ISERROR(NOT(MATCH(A1,$B$1:$B$11,0))),A1,"")
Say you want to find those in col. B with no match in col. A. Put in C2:
=COUNTIF($A$2:$A$26;B2)
This will give you 1 (or more) if there's a match, 0 otherwise.
You can also sort both columns individually, then select both, Goto Special, select Row Differences. But that will stop working after the first new item, and you will have to insert a cell then start again.
If I understand your question well:
=if(Ax = Bx; True_directive ; False_directive)
Replace True/false directives by a function or by a string like "Equal" or "different".
It depends on the format of your cells and your functional requirements. With a leading "0" they could be formatted as text.
Then you could use IF function to compare cells in Excel:
=IF ( logical_test, value_if_true, value_if_false )
Example:
=IF ( A1<>A2, "not equal", "equal" )
If they are formatted as numbers, you could subtract the first column from the other in order to get the difference:
=A1-A2
This formula will directly compare two cells. If they are the same, it will print True
, if one difference exists, it will print False
. This formula will not print what the differences are.
=IF(A1=B1,"True","False")
I'm using Excel 2010 and just highlight the two columns that have the two sets of values I'm comparing, and then click the Conditional formatting dropdown on the home page of Excel, choose the Highlight Cells rules, and then differences. It then prompts to highlight either differences or similarities and asks what colour highlight you want to use...
The comparing can be done with Excel VBA code. The compare process can be made with the Excel VBA Worksheet.Countif
function.
Two columns on different worksheets were compared in this template. It found different results as an entire row was copied to the second worksheet.
Code:
Dim stk, msb As Worksheet
Set stk = Sheets("Page1")
Set msb = Sheets("Page2")
Application.ScreenUpdating = False
sat = (msb.Range("A" & Rows.Count).End(xlUp).Row) + 1
For i = 2 To stk.Range("A" & Rows.Count).End(xlUp).Row
If WorksheetFunction.CountIf(msb.Range("A2:A" & msb.Range("A" & Rows.Count).End(xlUp).Row), stk.Cells(i, "A")) = 0 Then
msb.Range("a" & sat).EntireRow.Value = stk.Range("a" & i).EntireRow.Value
msb.Range("a" & sat).Interior.ColorIndex = 22
sat = sat + 1
End If
Next
...
The tutorial's video: https://www.youtube.com/watch?v=Vt4_hEPsKt8
This is using another tool but I've just found this very easy to do. Using Notepad++:
In Excel make sure your 2 columns are sorted in the same order, then copy and paste your columns into 2 new text files and then run a compare (from plugins menu).
The NOT MATCH function combination works well. The following works too:
=IF(ISERROR(VLOOKUP(<<item in larger list>>,<<smaler list>>,1,FALSE)),<<item in larger list>>,"")
REMEMBER: the smaller list MUST be SORTED ASCENDING - a requirement of vlookup