1

У меня есть электронная таблица со столбцом, который перечисляет ссылки в числовом виде, например, в следующей форме «1, 2, 6». У меня также есть отдельная таблица, которая соотносит число с фактической ссылкой:

Рекомендации

Есть ли способ преобразовать этот нумерованный список в соответствующий текстовый список? Например, «1, 2, 6» будет переводиться как «Package Insert/Mfr, Trissel's 18th edition, USP 797»?

Спасибо!

1 ответ1

0

Обновление: добавить 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

Который можно назвать так:

Оригинальный ответ: функция листа

Основные предположения:

  1. У вас есть только 3 целых числа, как в вашем примере, начиная с 1 ... n (если это не так, и вы можете иметь более 3 целых чисел, гораздо проще решить эту проблему с помощью VBA, если вы не хотите разделить этот текст на колонны)
  2. Вы хотите сделать это в одной формуле, вместо использования текста в столбцах

Попробуйте следующее:

=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 вашим начальным значением.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .