Excel vlookup vários retornos

0

Eu tenho uma planilha do excel com uma lista de nomes em uma coluna e alguns valores associados na próxima coluna. Alguns desses nomes aparecem várias vezes com valores diferentes na próxima coluna.

Por exemplo:

John  AA
James AE
Trent TE
Jim   CE
Trent AX
Jim   XC

O resultado que estou procurando retornar da minha função vlookup é:

John  AA
James AE
Trent TE AX
Jim   CE XC

Ainda vlookup só pode retornar um valor, existe outra função que pode me ajudar com este problema?

    
por IamTrent 20.11.2017 / 06:27

2 respostas

1

Gostaria de sugerir a seguinte solução, apenas marque Captura de tela.

Ointervalodedados

FonteéA1:B7(excluindocabeçalhos).

ResultadoOintervalodedadoséA11:B14.

Primeiro,crieumaListadenomesexclusiva,escrevaestafórmulanacélulaA11.

{=IFERROR(INDEX($A$2:$A$7,MATCH(0,COUNTIF($A$11:A11,$A$2:$A$7),0)),"")}

Para os resultados finais, escreva a fórmula em B11 .

{= IFERROR (ÍNDICE ($ B $ 2: $ B $ 7, PEQUENO (SE ($ A11 = $ A $ 2: $ A $ 7, LINHA ($ A $ 2: $ A $ 7) -ROW ($ A $ 2) + 1), COLUNA (A1))), "")}

Arraste a gravação da célula de Fórmula 1 e, em seguida, até que seja necessário.

Espero que isso ajude você, já postei a Solução depois de ter sido testada por mim.

    
por 20.11.2017 / 10:06
0

Nevermind encontrou algum código que funciona muito bem.

Option Explicit
Function LookupCSVResults(lookupValue As Variant, lookupRange As Range, 
resultsRange As Range) As String

Dim s As String 'Results placeholder
Dim sTmp As String  'Cell value placeholder
Dim r As Long   'Row
Dim c As Long   'Column
Const strDelimiter = "|||"  'Makes InStr more robust

s = strDelimiter
For r = 1 To lookupRange.Rows.Count
    For c = 1 To lookupRange.Columns.Count
        If lookupRange.Cells(r, c).Value = lookupValue Then
            'I know it's weird to use offset but it works even if the two ranges
            'are of different sizes and it's the same way that SUMIF works
            sTmp = resultsRange.Offset(r - 1, c - 1).Cells(1, 1).Value
            If InStr(1, s, strDelimiter & sTmp & strDelimiter) = 0 Then
                s = s & sTmp & strDelimiter
            End If
        End If
    Next
Next

'Now make it look like CSV
s = Replace(s, strDelimiter, ",")
If Left(s, 1) = "," Then s = Mid(s, 2)
If Right(s, 1) = "," Then s = Left(s, Len(s) - 1)

LookupCSVResults = s 'Return the function

End Function
    
por 20.11.2017 / 06:46