If it's fairly simple to have multiple entries and look for exact matches, then
that would probably be the way to go.
Simply because the possible complexity of the VBA is ... dubious...
What I mean is:
In your example, you mentioned "Microsoft (Windows CE)" in one worksheet,
then somehow with this as input, it would find "Microsoft" as a match...
about "Windows" or "CE"?
Do you look for ALL? in what order? what about 2 of the three?
What if the company list included "CE Windows and Doors".
THAT company would match two of the three words, would that then
constitute a better "match"??
Depending on the size of the listings involved, this could be an issue.
but then again...
The most straight-forward approach would be to create an "alias" column in the
company name sheet and duplicate the records with "aliases"...
then, use the function wizard to insert a vlookup function.
the "help" for this function looks like:
Syntax
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value is the value to be found in the first column of the array.
Lookup_value can be a value, a reference, or a text string.
Table_array is the table of information in which data is looked up. Use a
reference to a range or a range name, such as Database or List.
* If range_lookup is TRUE, the values in the first column of table_array must
be placed in ascending order: ..., -2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE;
otherwise VLOOKUP may not give the correct value. If range_lookup is FALSE,
table_array does not need to be sorted.
* You can put the values in ascending order by choosing the Sort command from
the Data menu and selecting Ascending.
* The values in the first column of table_array can be text, numbers, or
logical values.
* Uppercase and lowercase text are equivalent.
Col_index_num is the column number in table_array from which the matching
value must be returned. A col_index_num of 1 returns the value in the first
column in table_array; a col_index_num of 2 returns the value in the second
column in table_array, and so on. If col_index_num is less than 1, VLOOKUP
returns the #VALUE! error value; if col_index_num is greater than the number of
columns in table_array, VLOOKUP returns the #REF! error value.
Range_lookup is a logical value that specifies whether you want VLOOKUP to
find an exact match or an approximate match. If TRUE or omitted, an approximate
match is returned. In other words, if an exact match is not found, the next
largest value that is less than lookup_value is returned. If FALSE, VLOOKUP will
find an exact match. If one is not found, the error value #N/A is returned.
if you'd like more help, send me some sample files directly and I'll take a
look.