## Compare two columns in different worksheets

*Article updated on November 27, 2017*

There are multiple columns in two different worksheets, one has more columns than another. I need to compare column F of worksheet 1 and column E of worksheet 2; if the value matches, compare column G of worksheet 1 and column F of worksheet 2; if the value matches, record the value in column N of worksheet1 from column M of worksheet 2. Please see example below.

Worksheet 1:

Column F Column G Column N

Item Code Item Sub-Code Bank Fee

1 0

2 0

4 0

8 0

28 0

Worksheet2:

Column E Column F Column M

Item Code Item Sub-Code Bank Fee

1 0 60

2 0 165

4 0 60

8 0 250

8 2 33

28 0 15

28 1 16.5

Appreciate your help in advance!

Array formula in cell N2, worksheet 1:

### How to enter an array formula

- Copy and paste the formula above in to cell N2
- Press and hold CTRL + SHIFT simultaneously
- Press Enter once
- Release all keys.

The formula is now surrounded by curly brackets, like this {=formula} if you did it right. Check your formula bar and make sure you have the curly brackets.

Then copy cell N2 and paste to cells below.

### Explaining array formula

The steps below is for cell N2 formula.

**Step 1 - Compare cell F2 (sheet1) with column F (sheet2)**

F2=Sheet2!$F$2:$F$8

becomes

1={1;2;4;8;8;28;28}

and returns

{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}

**Step 2 - Compare cell G2 (sheet1) with column G (sheet2)**

G2=Sheet2!$G$2:$G$8

becomes

0={0;0;0;0;2;0;1}

and returns

{TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE}

**Step 3 - Multiply arrays**

(F2=Sheet2!$F$2:$F$8)*(Sheet1!G2=Sheet2!$G$2:$G$8)

becomes

({TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}) * ({TRUE;TRUE;TRUE;TRUE;FALSE;TRUE;FALSE})

and returns

{1;0;0;0;0;0;0}

**Step 4 - Use IF function to replace calculated values with sheet2 values from column N, if TRUE (1)**

IF((F2=Sheet2!$F$2:$F$8)*(Sheet1!G2=Sheet2!$G$2:$G$8), Sheet2!$N$2:$N$8, "")

becomes

IF({1;0;0;0;0;0;0}, Sheet2!$N$2:$N$8, "")

becomes

IF({1;0;0;0;0;0;0}, {60;165;60;250;33;15;16.5}, "")

and returns

{60;"";"";"";"";"";""}

**Step 5 - MIN function finds the number in the array, ignores logical and text values**

MIN(IF((F2=Sheet2!$F$2:$F$8)*(Sheet1!G2=Sheet2!$G$2:$G$8),Sheet2!$N$2:$N$8,""))

becomes

MIN({60;"";"";"";"";"";""})

and returns 60.

### Download excel *.xlsx file

### Leave a Reply

**How to add a formula to your comment:**

<code>your formula</code>

Remember to convert less than and larger than signs to html character entities before you post your comment.

**How to add VBA code to your comment:**

[vb 1="vbnet" language=","]

VBA code

[/vb]

**How to add a picture to your comment:**

Upload picture to postimage.org

Add picture link to comment.

**Contact Oscar**

You can contact me through this webpage

## Share this article