Ir para o conteúdo principal

Como vlookup retornar vários valores em uma célula no Excel?

Normalmente, no Excel, quando você usa a função PROCV, se houver vários valores para atender aos critérios, você pode obter apenas o primeiro. Mas, às vezes, você deseja retornar todos os valores correspondentes que atendem aos critérios em uma célula, como mostrado a seguir na imagem, como você poderia resolver isso?

Vlookup para retornar vários valores em uma célula com a função TEXTJOIN (Excel 2019 e Office 365)

Vlookup para retornar vários valores em uma célula com função definida pelo usuário

Vlookup para retornar vários valores em uma célula com um recurso útil


Vlookup para retornar vários valores em uma célula com a função TEXTJOIN (Excel 2019 e Office 365)

Se você tiver a versão superior do Excel, como Excel 2019 e Office 365, há uma nova função - TEXTJOIN, com esta função poderosa, você pode rapidamente vlookup e retornar todos os valores correspondentes em uma célula.

Vlookup para retornar todos os valores correspondentes em uma célula

Por favor, aplique a fórmula abaixo em uma célula em branco onde você deseja colocar o resultado e pressione Ctrl + Shift + Enter juntas para obter o primeiro resultado e, em seguida, arraste a alça de preenchimento para baixo até a célula que deseja usar esta fórmula, e você obterá todos os valores correspondentes, conforme mostrado abaixo:

=TEXTJOIN(",",TRUE,IF($A$2:$A$11=E2,$C$2:$C$11,""))

Nota: Na fórmula acima, A2: A11 é o intervalo de pesquisa contém os dados de pesquisa, E2 é o valor de pesquisa, C2: C11 é o intervalo de dados do qual você deseja retornar os valores correspondentes, ","é o separador para separar os vários registros.

Vlookup para retornar todos os valores correspondentes sem duplicatas em uma célula

Se você deseja retornar todos os valores correspondentes com base nos dados de pesquisa sem duplicatas, a fórmula abaixo pode ajudá-lo.

Copie e cole a seguinte fórmula em uma célula em branco e pressione Ctrl + Shift + Enter juntas para obter o primeiro resultado e, em seguida, copie esta fórmula para preencher outras células, e você obterá todos os valores correspondentes sem os dulpicados, conforme a captura de tela abaixo:

=TEXTJOIN(",", TRUE, IF(IFERROR(MATCH($C$2:$C$11, IF(E2=$A$2:$A$11, $C$2:$C$11, ""), 0),"")=MATCH(ROW($C$2:$C$11), ROW($C$2:$C$11)), $C$2:$C$11, ""))

Nota: Na fórmula acima, A2: A11 é o intervalo de pesquisa contém os dados de pesquisa, E2 é o valor de pesquisa, C2: C11 é o intervalo de dados do qual você deseja retornar os valores correspondentes, ","é o separador para separar os vários registros.

Vlookup para retornar vários valores em uma célula com função definida pelo usuário

A função TEXTJOIN acima está disponível apenas para Excel 2019 e Office 365, se você tiver outras versões anteriores do Excel, você deve usar alguns códigos para concluir esta tarefa.

Vlookup para retornar todos os valores correspondentes em uma célula

1. Segure o ALT + F11 chaves, e abre o Microsoft Visual Basic para Aplicações janela.

2. Clique inserção > Móduloe cole o seguinte código no Janela Módulo.

Código VBA: Vlookup para retornar vários valores em uma célula

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Updateby Extendoffice
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

3. Em seguida, salve e feche este código, volte para a planilha e insira esta fórmula: =CONCATENATEIF($A$2:$A$11, E2, $C$2:$C$11, ", ") em uma célula em branco específica onde deseja colocar o resultado, em seguida, arraste a alça de preenchimento para baixo para obter todos os valores correspondentes em uma célula que você deseja, consulte a captura de tela:

Nota: Na fórmula acima, A2: A11 é o intervalo de pesquisa contém os dados de pesquisa, E2 é o valor de pesquisa, C2: C11 é o intervalo de dados do qual você deseja retornar os valores correspondentes, ","é o separador para separar os vários registros.

Vlookup para retornar todos os valores correspondentes sem duplicatas em uma célula

Para ignorar as duplicatas nos valores correspondentes retornados, faça com o código abaixo.

1. Segure o Alt + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. Clique inserção > Móduloe cole o seguinte código no Janela Módulo.

Código VBA: Vlookup e retorna vários valores correspondentes exclusivos em uma célula

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
'Updateby Extendoffice
    Dim xDic As New Dictionary
    Dim xRows As Long
    Dim xStr As String
    Dim i As Long
    On Error Resume Next
    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
        If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
            xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
        End If
    Next
    xStr = ""
    MultipleLookupNoRept = xStr
    If xDic.Count > 0 Then
        For i = 0 To xDic.Count - 1
            xStr = xStr & xDic.Keys(i) & ","
        Next
        MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
End Function

3. Após inserir o código, clique em Ferramentas > Referência no aberto Microsoft Visual Basic para Aplicações janela e, em seguida, no Referências - VBAProject caixa de diálogo, verifique Tempo de execução de scripts da Microsoft opção no Referências Disponíveis caixa de lista, veja as capturas de tela:

4. Então clique OK para fechar a caixa de diálogo, salve e feche a janela de código, retorne à planilha e insira esta fórmula: =MultipleLookupNoRept(E2,$A$2:$C$11,3) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values, see screenshot:

Nota: Na fórmula acima, A2: C11 é o intervalo de dados que você deseja usar, E2 é o valor de pesquisa, o número 3 é o número da coluna que contém os valores retornados.

Vlookup para retornar vários valores em uma célula com um recurso útil

 Se você tem nosso Kutools for Excel, Com o seu Combinar linhas avançadas recurso, você pode rapidamente mesclar ou combinar as linhas com base no mesmo valor e fazer alguns cálculos conforme necessário.

Nota:Para aplicar isso Combinar linhas avançadas, em primeiro lugar, você deve baixar o Kutools for Excele, em seguida, aplique o recurso de forma rápida e fácil.

Depois de instalar Kutools for Excel, faça o seguinte:

1. Selecione o intervalo de dados que você deseja combinar com os dados de uma coluna com base em outra coluna.

2. Clique Kutools > Unir e dividir > Combinar linhas avançadas, veja a captura de tela:

3. No estalou para fora Combinar linhas avançadas caixa de diálogo:

  • Clique no nome da coluna-chave a ser combinada com base e clique em Chave primária
  • Em seguida, clique em outra coluna cujos dados você deseja combinar com base na coluna-chave e clique em Combinar para escolher um separador para separar os dados combinados.

4. Então clique OK botão, e você obterá os seguintes resultados:

Baixe e teste grátis Kutools for Excel Agora !


Mais artigos relativos:

  • Função VLOOKUP com alguns exemplos básicos e avançados
  • No Excel, a função VLOOKUP é uma função poderosa para a maioria dos usuários do Excel, que é usada para procurar um valor na extremidade esquerda do intervalo de dados e retornar um valor correspondente na mesma linha de uma coluna que você especificou. Este tutorial fala sobre como usar a função VLOOKUP com alguns exemplos básicos e avançados no Excel.
  • Retorna vários valores correspondentes com base em um ou vários critérios
  • Normalmente, pesquisar um valor específico e retornar o item correspondente é fácil para a maioria de nós usando a função VLOOKUP. Mas, você já tentou retornar vários valores correspondentes com base em um ou mais critérios? Neste artigo, apresentarei algumas fórmulas para resolver essa tarefa complexa no Excel.
  • Vlookup e retornar vários valores verticalmente
  • Normalmente, você pode usar a função Vlookup para obter o primeiro valor correspondente, mas, às vezes, você deseja retornar todos os registros correspondentes com base em um critério específico. Neste artigo, falarei sobre como vlookup e retornar todos os valores correspondentes verticalmente, horizontalmente ou em uma única célula.
  • Vlookup e retornar vários valores da lista suspensa
  • No Excel, como você poderia visualizar e retornar vários valores correspondentes de uma lista suspensa, o que significa que quando você escolhe um item da lista suspensa, todos os seus valores relativos são exibidos de uma vez. Neste artigo, irei apresentar a solução passo a passo.

Melhores ferramentas de produtividade de escritório

Recursos mais comuns: Encontre, destaque ou identifique duplicatas   |  Excluir linhas em branco   |  Combine colunas ou células sem perder dados   |   Rodada sem Fórmula ...
Super pesquisa: VLookup de múltiplos critérios    VLookup de múltiplos valores  |   VLookup em várias planilhas   |   Pesquisa Difusa ....
Lista suspensa avançada: Crie rapidamente uma lista suspensa   |  Lista suspensa de dependentes   |  Lista suspensa de seleção múltipla ....
Gerenciador de colunas: Adicione um número específico de colunas  |  Mover colunas  |  Alternar status de visibilidade de colunas ocultas  |  Compare intervalos e colunas ...
Recursos em destaque: Foco da Grade   |  Vista de Design   |   Grande Barra de Fórmula    Gerenciador de pastas de trabalho e planilhas   |  Biblioteca (Auto texto)   |  Data Picker   |  Combinar planilhas   |  Criptografar/Descriptografar Células    Enviar e-mails por lista   |  Super Filtro   |   Filtro Especial (filtro negrito/itálico/tachado...) ...
15 principais conjuntos de ferramentas12 Texto Ferramentas (Adicionar texto, Remover Personagens, ...)   |   50+ de cores Tipos (Gráfico de Gantt, ...)   |   Mais de 40 práticos Fórmulas (Calcule a idade com base no aniversário, ...)   |   19 Inclusão Ferramentas (Insira o código QR, Inserir imagem do caminho, ...)   |   12 Conversão Ferramentas (Números para Palavras, Conversão de moedas, ...)   |   7 Unir e dividir Ferramentas (Combinar linhas avançadas, Dividir células, ...)   |   ... e mais

Aprimore suas habilidades de Excel com Kutools for Excele experimente eficiência como nunca antes. Kutools for Excel Oferece mais de 300 recursos avançados para aumentar a produtividade e economizar tempo.  Clique aqui para obter o recurso que você mais precisa...

guia kte 201905


Office Tab Traz a interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
Comments (43)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
I have created a problem.
"I" have combined a "Textjoin" end "Vlookup" to return multiple values in to one single cell.
My problem is that the formula have to have an exact value to look for and I want it to lookup an "almost" match or Partial match.

Example: I have made a schedule how we ate going to work and a D1 is working from 07:30-16:00. And to lookup D1 is not the problem, the problem is that my boss sometimes puts other stuff togeather with the D1... Like "D1 +" or "D1 meeting".
Since my formula only lookup "D1" it misses for example the "D1 +".

My formula (that I have gotten from the web) =TEXTJOIN(" och ";SANT;OM($B$3:$B$15=$C$22:$F$22;$A$3:$A$15;""))It´s in swedish so "SANT" is "TRUE" and "OM" is "IF".

How can I make the formula lookup all the cells that have some form of "D1" in it and return all those to the same cell?
No matter if it says "D1 +" or "D1 meeting" or whatever.
The reson I want this, is because the boss always leave "D1" but can add other text behind the "D1"... and just because of that, my boss messes up my formula.
This comment was minimized by the moderator on the site
Hi!
This is a great VBA-Code which could help me a lot.But when I start the Function MultipleLookupNoRept Excel crashs...I´ve got a Dataset with about 6.000 Rows (Excel 2013).... is this too much for the VBA Function?

Thanks!
This comment was minimized by the moderator on the site
Hello Mr.XXL,Sorry to hear that. The row limit for Excel 2013 is 1048576. Therefore, maybe the VBA code is the reason for the crash.
Anyway, I would love to offer you another VBA code for Vlookup To Return All Matching Values Without Duplicates Into One Cell. Please use the VBA code below:
Option Explicit

Function Lookup_concat(Search_string As String, _
Search_in_col As Range, Return_val_col As Range)

Dim i As Long
Dim temp() As Variant
Dim result As String
ReDim temp(0)

For i = 1 To Search_in_col.Count
If Search_in_col.Cells(i, 1) = Search_string Then
temp(UBound(temp)) = Return_val_col.Cells(i, 1).Value
ReDim Preserve temp(UBound(temp) + 1)
End If
Next

If temp(0) <> "" Then
ReDim Preserve temp(UBound(temp) - 1)
Unique temp
For i = LBound(temp) To UBound(temp)
result = result & " " & temp(i)
Next i
Lookup_concat = Trim(result)
Else
Lookup_concat = ""
End If

End Function

Function Unique(tempArray As Variant)

Dim coll As New Collection
Dim Value As Variant

On Error Resume Next
For Each Value In tempArray
If Len(Value) > 0 Then coll.Add Value, CStr(Value)
Next Value
On Error GoTo 0

ReDim tempArray(0)

For Each Value In coll
tempArray(UBound(tempArray)) = Value
ReDim Preserve tempArray(UBound(tempArray) + 1)
Next Value

End Function

After you insert this VBA code in the Module, please type the formula =Lookup_concat(E2,$A$2:$A$14,$C$2:$C$14) into a blank cell where you want to output the result, and then drag the fill hanlde down to get all matching values. Please see the file I uploaded in this comment. Hope it solves your problem. 
Sincerely,Mandy

This comment was minimized by the moderator on the site
Hi, Thanks so much this worked!I used it to pull dates, that populated in the serial number format (<span style="letter-spacing: 0.2px; color: inherit; font-family: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit;">Changing the format to short date format using =TEXT(A2,”mm/dd/yy”) OR =DATEVALUE(A2) are not working. Do you have any solutions?</span>
This comment was minimized by the moderator on the site
Thank you for the explanations, however the function 'MultipleLookupNoRept' does not work on my file, could you tell me if an error exists.
This comment was minimized by the moderator on the site
Hi, Hasnae,Please check if you miss the third step -  check Microsoft Scripting Runtime option in the Available References list box.

This comment was minimized by the moderator on the site
Thank you so much for the code. Is there a way I can use the code to look up multiple values from multiple sheets? I tried to combine your function with IFERROR function but it doesn't seem to work.
This comment was minimized by the moderator on the site
Can this be modified to place the sum of those values? Instead of (400 400 400 400 400 400), can it sum them to show (2400)?
This comment was minimized by the moderator on the site
How with HLookUp function?
This comment was minimized by the moderator on the site
thanks for the code. I have modified it to allow you to optionally specify your own separator, Default is " ", if you specify the separator as"#cr" it will insert a CR/LF so the values will be on a separate line in the cell. It only applies the separator if there are multiple values

Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long, Optional ByVal pSep As Variant)

' ### Returns multiple values from a table into 1 cell ###

' pValue is the key value to lookup

' WorkRng is the Table you want to look up

' pIndex is the column # for the values to be returned from the pWorkRng

' pSep (optional) is the separator to be used. if omitted then default is a space (it doesn't apply the separator for the 1st entry)

' if the separtor = "#cr" it will separate the values on different line in the cell

Dim rng As Range

Dim sSep As String

Dim xResult As String

Dim Item1 As Boolean

Item1 = True



If IsMissing(pSep) = True Then

sSep = vbCr

Else

If pSep = "#cr" Then

sSep = vbCrLf

Else

sSep = pSep

End If

End If



xResult = ""

For Each rng In pWorkRng

If rng = pValue Then

If Item1 Then

xResult = xResult & rng.Offset(0, pIndex - 1)

Item1 = False

Else

xResult = xResult & sSep & rng.Offset(0, pIndex - 1)

End If

End If

Next

MYVLOOKUP = xResult

End Function
This comment was minimized by the moderator on the site
Thank you for this, the line breaks are what i needed to top this formula off! Question, is there a way to modify the code so that two values are compared? For example, similar to what we see with index and match, can i look for Product and Quantity columns, and based on those parameters it outputs results from the Region Column?
This comment was minimized by the moderator on the site
Thanks a lot for this code, it is very helpful. Does anyone know away to sum the values in the cell to just have at total of them.
Cheers
This comment was minimized by the moderator on the site
Hello, James, to sum values based on the corresponding items, the following article may help you, please chek it:
https://www.extendoffice.com/documents/excel/1268-excel-combine-duplicate-rows-and-sum.html
This comment was minimized by the moderator on the site
I have a server, it has connected with multiple applications. I want to compare compare two column and get the related applications details for that server.

What is the command for that.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations