Lets say I have 3 columns of data
AMOUNT(A) AMOUNT(B) INVOICE(C) 55 49 4541 47 47 1515 42 47 4478 86 12 9993 12 100 1224 5 44 1452 100 4287 99 4444
What I need to check to see if the value in column A matches a value in column B. If there is a match, it will return the value from column C in column D. Now this is easy with a VLOOKUP however I am dealing with 700+ lines and there are multiple amounts that match. INDEX(MATCH) could work but it only returns one value. Is this a VB only problem?
I.E Value 47 exists in column B twice so therefore column D would return both invoice numbers (1515 – 4478)
In VBA, the problem would be trivial as you have already correctly described the logic with the problem statement itself.
Using Excel functionality only, without VBA is the interesting problem. You need to do the following steps to achieve an output that looks like this…
The steps are as follows:
- Pivot Table: Make a pivot-table from the Columns
(C)with Rows Fields as
(C)and the minimum of
AMOUNT(B)as the Value field. (See Figure below)
- Helper Columns: Make a column on the side of the pivot table, say
(Q)which is simply equal to everything in column
Contd … : In column
(R)(which unfortunately happens to be in the sheet’s column Q, sorry for the confusion there), as shown, for cell
Q20for e.g. put in the formula
That will result in the creation of something like the table below:
(P) (Q) 12 9993 44 1452 47 4478,1515 47 4478 49 4541 99 4444 100 4287,1224 100 4287
Now the hard work is done. All you need to do is to lookup using
VLOOKUP key-value pairs from this helper table
– It will be very fast because the pivot table always keeps it sorted and hence an exact
LOOKUP is not necessary.
– Screenshots are shown below for the Pivot table as well as for the final
Pivot Table and Helper Table:
so I’m using the Countif to see if there are dups based on column A.
In the D column type,