Convierta números separados por comas al texto correspondiente

1

Tengo una hoja de cálculo con una columna que enumera referencias numéricamente en la siguiente forma "1, 2, 6", por ejemplo. También tengo una tabla separada que correlaciona el número con una referencia real:

Referencias

¿Hay alguna forma de convertir esta lista numerada en la lista de texto correspondiente? Por ejemplo, "1, 2, 6" se traduciría a "Package Insert / Mfr, Trissel's 18th edition, USP 797"?

¡Gracias!

Blike
fuente

Respuestas:

0

Actualización: Agregar Vba

Si la suposición clave n. ° 1 a continuación no es de su agrado, puede probar este fragmento de código.

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

A lo que puedes llamar así:

ingrese la descripción de la imagen aquí

Respuesta original: Función de hoja de trabajo

Supuestos clave:

  1. Solo tiene 3 enteros como en su ejemplo, que van desde 1 ... n (si esto no es cierto y puede tener más de 3 enteros, es mucho más fácil resolver esto usando VBA a menos que desee dividir este texto en columnas)
  2. Quiere que esto se haga en una fórmula, en lugar de usar texto en columnas

Intenta lo siguiente:

=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)

Formateado para ser más fácil de leer:

=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)

Básicamente: tome el texto a la izquierda de la primera coma, búsquelo en su tabla de búsqueda. Luego, tome el texto entre el primer espacio y la segunda coma, búsquelo en su tabla de búsqueda. Finalmente, tome el texto a la derecha del último espacio, búsquelo en su tabla de búsqueda.

Reemplace G2: H11 con su tabla de búsqueda. Reemplace A2 con su valor inicial.ingrese la descripción de la imagen aquí

Joe
fuente