Search code examples
google-sheetsformulasarray-formulas

Keep result of SPLIT() as string instead of number for VLOOKUP()


In Google Sheets, I have this formula:

=ARRAYFORMULA( VLOOKUP( SPLIT(F2,", "), A2:B8, 2, FALSE) )

The intent is to take the comma-delimited string in cell F2 and find all values associated with the pieces. This works correctly, except when one of the pieces of the string looks like a number. For example, if F2 has the text a, 1.2, 1.2.3 then VLOOKUP will look for a as a string, and for 1.2.3 as a string, but will look for 1.2 as a number.

How can I coerce the result of SPLIT so that each piece remains a string?

I have a public copy of a test spreadsheet viewable here:
https://docs.google.com/spreadsheets/d/115WmV0vfXfaRgT0fVifJo86od3irZQy5gB3l-g6c7Ts/edit?usp=sharing


As background information, VLOOKUP treats strings and numbers differently. For example, given this table (where the formulae are shown for the first column):

              A                    B
1           ="1.2"                STR
2           =1.2                  NUM
4  =VLOOKUP("1.2",A1:B2,2,0)
5  =VLOOKUP(1.2,A1:B2,2,0)

...the value shown in A4 will be "STR", and the value shown in A5 will be "NUM".


Solution

  • You can CONCAT a number with an empty string to convert it into its equivalent string representation.

    CONCAT(1.2,"") yields "1.2"

    To do this for every value, you must wrap the CONCAT() call in ARRAYFORMULA():

    =ARRAYFORMULA(CONCAT(SPLIT(F2,", "),""))

    The final formula thus becomes:

    =TRANSPOSE(ARRAYFORMULA(VLOOKUP(ARRAYFORMULA(CONCAT(SPLIT(F2,", "),"")),A2:B8,2,FALSE)))