I have two worksheets in Excel.
One is a mapping, for example
A Aardvark
B Bear
C Cow
D Dog
The other is a table whose 2nd column I want to complete automatically. The first column contains single values, or multiple values comma-separated:
A
A, C
D, B
C
The result I want in the 2nd column is
Aardvark
Aardvark, Cow
Dog, Bear
Cow
As long as 1st column cells contain only single values, it’s easy with Excel VLOOKUP.
But it doesn’t handle multiple values (or rather, it misunderstands them as single values) and gives result
Aardvark
#NA
#NA
Cow
How can I get the desired result? Perhaps with more complex formula, different Excel function, array tables, or using MS-SQL client in Excel to query the Excel tables as a database?
UDF approach:
Function MultiVL(v As Range, tbl As Range)
Dim arr, rv As String, x As Integer, res
rv = ""
arr = Split(v.Value, ",")
For x = LBound(arr) To UBound(arr)
res = Application.VLookup(Trim(arr(x)), tbl, 2, False)
rv = rv & IIf(rv <> "", ", ", "") & IIf(IsError(res), "?", res)
Next x
MultiVL = rv
End Function
Tags: excel, exceldatabase