Converta números separados por vírgula para o texto correspondente

1

Eu tenho uma planilha com uma coluna que lista referências numericamente no seguinte formato "1, 2, 6" por exemplo. Eu também tenho uma tabela separada que correlaciona o número a uma referência real:

Existeumamaneiradeconverteressalistanumeradaparaalistadetextocorrespondente?Porexemplo,"1, 2, 6" seria traduzido para "Package Insert / Mfr, 18ª edição de Trissel, USP 797"?

Obrigado!

    
por Blike 31.10.2016 / 23:48

1 resposta

0

Atualização: Adicionar Vba

Se a suposição de chave 1 abaixo não for do seu agrado, você pode experimentar este snippet 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

Que você pode ligar assim:

Respostaoriginal:Funçãodeplanilha

Principaispressupostos:

  1. Vocêsótem3inteiroscomonoseuexemplo,variandode1...n(seissonãoforverdadeevocêpodetermaisde3inteiros,émuitomaisfácilresolverissousandooVBA,amenosquevocêqueiradividirestetextoparacolunas)
  2. Vocêquerqueissosejafeitoemumafórmula,emvezdeusartextoemcolunas

Tenteoseguinte:

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

Formatado para facilitar a leitura:

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

Basicamente: pegue o texto à esquerda da primeira vírgula, procure em sua tabela de pesquisa. Em seguida, pegue o texto entre o primeiro espaço e a segunda vírgula, procure em sua tabela de consulta. Finalmente, pegue o texto à direita do último espaço, procure em sua tabela de pesquisa.

Substitua G2: H11 pela sua tabela de consulta. Substitua A2 pelo seu valor inicial.

    
por 01.11.2016 / 00:27