Обновление: добавить Vba
Если приведенное ниже предположение ключа № 1 не нравится вам, попробуйте этот фрагмент кода.
Function lookupStringCodes(lookupValue As Range, lookupRange As Range, lookupResult As Range)
Dim commaSepVals() As String
commaSepVals = Split(CStr(lookupValue.Value), ",")
Dim output As String
output = vbNullString
For i = LBound(commaSepVals) To UBound(commaSepVals)
commaSepVals(i) = Replace(commaSepVals(i), " ", "")
Next
Dim sep As String
sep = ", "
For j = LBound(commaSepVals) To UBound(commaSepVals)
output = output & _
Application.WorksheetFunction.Index(lookupResult, _
Application.WorksheetFunction.Match(CStr(commaSepVals(j)), lookupRange, 0))
If j < UBound(commaSepVals) Then
output = output & sep
End If
Next
lookupStringCodes = output
End Function
Который можно назвать так:
Оригинальный ответ: функция листа
Основные предположения:
- У вас есть только 3 целых числа, как в вашем примере, начиная с 1 ... n (если это не так, и вы можете иметь более 3 целых чисел, гораздо проще решить эту проблему с помощью VBA, если вы не хотите разделить этот текст на колонны)
- Вы хотите сделать это в одной формуле, вместо использования текста в столбцах
Попробуйте следующее:
=VLOOKUP(LEFT(A2,(FIND(",",A2,1)-1)), G$2:H$11, 2, FALSE) & ", " & VLOOKUP(LEFT(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ", 100)),100,100)), LEN(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ", 100)),100,100)))-1), G$2:H$11, 2, FALSE) & ", "& VLOOKUP(TRIM(RIGHT(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),LEN(A2))), G$2:H$11, 2, FALSE)
Отформатирован так, чтобы его было легче читать:
=VLOOKUP(LEFT(A2,(FIND(",",A2,1)-1)), G$2:H$11, 2, FALSE) & ", " &
VLOOKUP(LEFT(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ", 100)),100,100)),
LEN(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ", 100)),100,100)))-1), G$2:H$11, 2, FALSE) & ", "&
VLOOKUP(TRIM(RIGHT(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),LEN(A2))), G$2:H$11, 2, FALSE)
В основном: возьмите текст слева от первой запятой, найдите его в таблице поиска. Затем поместите текст между первым пробелом и второй запятой и найдите его в таблице поиска. Наконец, возьмите текст справа от последнего пробела, найдите его в таблице поиска.
Замените G2:H11 вашей таблицей поиска. Замените А2 вашим начальным значением.