## How to lookup only partially-matched value?? – Crazy lookup!!!

This is a real workplace problem.

Look at the two tables below, the task was to map the Shop ID from Table 1 (left) to Table 2 (right).  In both tables there is a common key “Shop Name”.  Sound easy? Pls look at the tables first.

The so-called common key appears to be totally different in the two tables.  How could it be possible to do the mapping by formula when the values in the common key are so special??

If not by formula, was I supposed to do that manually by eye-balling?  (The list is much long than what is shown above… ) That stopped me for a second look at the tables again.  Thanks GOD, there is one “commonality” in the “Shop Name”.  Do you see?

In Table 2, when all spaces in shop names are taken out, we see the “Shop Name” somewhere in the middle of the “Shop Name” in Table 1.  I see light in the darkness because the task can be done by formula and be completed in just a minute…  How? Let’s do it step by step.

Step 1 – Remove “Space” in the lookup values by using function SUBSTITUTE

The Sytax

=Substitute(Text,Old Text,New Text,[instance number])

In the example, it simply means: Look at the text in “D3”, substitute space (” “) with nothing (“”).  As [instance number] is omitted, Excel will substitute all spaces found.

Result: “Danang1

Step 2 – Add “*” in front of and after the above result by using “&” for subsequent lookup

The “&” operator serves the same function as CONCATENATE.

Now the result is: “*Danang1*

Note: * is a wildcard meaning text string of any sequences.

*Danang1*” now serves the purpose of looking up from Table 1.

Step 3 – Identify the relative position of the above result under Shop Name in Table 1

The Syntax

=MATCH(lookup_value,lookup_array,match_type)

In this example, the lookup_value is the result in Step 2 that is “*Danang1*“.  Literally the formula means: Look up any text that contains “Danang1” in between, from the range of B3:B100 where holds the Shop Name in Table 1.  Once a matched value is found, returns the relative positive in the range.  Exact match pls.

Result: “4″

Step 4 – Get the corresponding Shop Name by using INDEX

The Syntax

=INDEX(array,row_num,column_num)

It simple means in our example that under “Shop No” (A3:A100) in Table 1, return the 4th value.

This is the final formula:

=INDEX(\$A\$3:\$A\$100,MATCH(“*”&SUBSTITUTE(D3,” “,””)&”*”,\$B\$3:\$B\$100,0))

Result: “9999/1004

Step 5 – Get the job done by filling down

Result:

Final Step – Relax and enjoy a cup of your favorite drink

If you were me, would you submit the result to your boss immediately?? 😛