Note: The other languages of the website are Google-translated. Back to English

Como retornar vários valores de pesquisa em uma célula separada por vírgulas?

No Excel, podemos aplicar a função VLOOKUP para retornar o primeiro valor correspondido de células de uma tabela, mas, às vezes, precisamos extrair todos os valores correspondentes e, em seguida, separados por um delimitador específico, como vírgula, hífen, etc ... em um único célula como a seguinte captura de tela mostrada. Como podemos obter e retornar vários valores de pesquisa em uma célula separada por vírgulas no Excel?

doc retorna vários valores separados por vírgula 1

Retorna vários valores de pesquisa em uma célula separada por vírgulas com função definida pelo usuário

Retorna vários valores de pesquisa em uma célula separada por vírgulas com o Kutools para Excel


Retorna vários valores de pesquisa em uma célula separada por vírgulas com função definida pelo usuário

Normalmente, não há uma maneira direta de extrair e retornar os vários valores correspondentes e separados por vírgula em uma célula. Aqui, você pode criar uma função definida pelo usuário para resolver este trabalho, por favor, faça o seguinte:

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 Módulo Janela.

Código VBA: retorna vários valores de pesquisa em uma célula separada por vírgulas

Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby Extendoffice
    Dim I As Long
    Dim xRet As String
    For I = 1 To LookupRange.Columns(1).Cells.Count
        If LookupRange.Cells(I, 1) = LookupValue Then
            If xRet = "" Then
                xRet = LookupRange.Cells(I, ColumnNumber) & Char
            Else
                xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
            End If
        End If
    Next
    SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function

3. Em seguida, salve este código e feche a janela Módulo, volte para sua planilha e insira esta fórmula: = SingleCellExtract (D2, A2: B15,2, ",") em uma célula em branco que você deseja retornar o resultado. E então pressione Entrar chave para obter o resultado, consulte a imagem:

doc retorna vários valores separados por vírgula 2

Nota: Na fórmula acima:

D2: indica os valores da célula que você deseja consultar;

A2: B15: é o intervalo de dados que você deseja buscar os dados;

2: o número 2 é o número da coluna que o valor correspondente deve ser retornado;

,: a vírgula é o separador que você deseja separar os vários valores.

Você pode alterá-los conforme sua necessidade.


Retorna vários valores de pesquisa em uma célula separada por vírgulas com o Kutools para Excel

Se você tem Kutools for Excel, essa tarefa não será mais um problema. o Combinar linhas avançadas O utilitário pode ajudá-lo a combinar todos os valores relativos com base em uma coluna.

Kutools for Excel : com mais de 300 suplementos úteis do Excel, grátis para testar sem limitação em 30 dias

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

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

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

3. No Combinar linhas com base na coluna caixa de diálogo, clique no nome da coluna que deseja combinar com base e clique em Chave primária botão, veja a captura de tela:

doc retorna vários valores separados por vírgula 4

4. Em seguida, clique no nome de outra coluna com a qual deseja combinar os valores correspondentes e clique em Combinar para escolher um separador para separar os valores combinados, consulte a captura de tela:

doc retorna vários valores separados por vírgula 5

5. Então clique OK botão, todas as células correspondentes com o mesmo valor foram combinadas em uma célula separada por vírgula, veja as capturas de tela:

doc retorna vários valores separados por vírgula 6 2 doc retorna vários valores separados por vírgula 7

Clique para saber mais detalhes sobre este utilitário Advanced Combine Rows ...

Baixe e teste grátis Kutools para Excel agora!


Demonstração: retorna vários valores de pesquisa em uma célula separada por vírgulas com o Kutools para Excel

Kutools for Excel: com mais de 300 suplementos úteis do Excel, grátis para testar sem limitação em 30 dias. Baixe e teste grátis agora!

As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz 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!
parte inferior da aba do escritório
Comentários (16)
Avaliado 5 fora do 5 · classificações 2
Este comentário foi feito pelo moderador no site
Enquanto eu vou colar e salvar o módulo, aparece uma mensagem pop-up que indica uma perda significativa do verificador de compatibilidade de funcionalidade
Este comentário foi feito pelo moderador no site
Obrigado por este post. Você sabe como eu faria para manipular os dois inteiros separados que isso está criando. Por exemplo, digamos que a função '=SingleCellExtract' agora produz (1 , 2). Existe uma maneira de ter uma célula próxima a ela que faça (1+.5 , 2+.5)?
Este comentário foi feito pelo moderador no site
Isso funciona, mas retarda meu excel majorly! Alguma dica para ajudar a acelerar?
Este comentário foi feito pelo moderador no site
Isso simplesmente não funciona. Não consegui fazê-lo funcionar no meu próprio aplicativo, então copiei/colei o vba e a fórmula e ele retornou um erro toda vez
Este comentário foi feito pelo moderador no site
obrigado, em primeiro lugar eu consegui fazer isso funcionar sem a desaceleração no desempenho. Estou usando valores em vez desse texto, então minha pergunta é que quero trazer de volta todos aqueles com menos de 19 pontos em uma lista. A extração de célula única pode funcionar para isso ou precisa ser um valor específico?
Este comentário foi feito pelo moderador no site
O comando VB é interrompido quando o intervalo é maior que 154 linhas (ou seja: B154)....
Este comentário foi feito pelo moderador no site
Erro aparece se aumentar o tamanho da matriz
Este comentário foi feito pelo moderador no site
Quando 2 critérios correspondem, retorna vários valores de pesquisa em uma célula separada por vírgula
A2 = B2 então resultado do intervalo por "SingleCellExtract" - por favor .......
Este comentário foi feito pelo moderador no site
Bom dia,

o código VBA funcionou perfeitamente com minha planilha, bem claro e simples, porém, eu estava tentando encontrar uma forma de dizer ao excel para retornar apenas os valores únicos. Isso seria possível usando este mesmo código?
Avaliado 5 fora do 5
Este comentário foi feito pelo moderador no site
Oi,

Eu quero o código de validação exato para vários valores separados por vírgula e espaço para cada valor.

Exemplo:
Lucy, Tom, Nicol, Akash, Maçã

Por favor, repita se você tiver alguma sugestão.
Avaliado 4.5 fora do 5
Este comentário foi feito pelo moderador no site
Olá, Manikanta
Para separar os vários valores por vírgula e espaço, você só precisa adicionar um espaço atrás da vírgula, altere a fórmula assim: =SingleCellExtract(D2,A2:B15,2,"", ").
Por favor, tente, espero que possa ajudá-lo!
Este comentário foi feito pelo moderador no site
Olá Skyyang,

Obrigado pela sua repetição!

Já tentei da mesma forma mas no valor da célula por último uma vírgula extra (,) vem abaixo o exemplo.

Lucy, Tom, Nicol, Akasha, Apple,

Isso não funcionará para o arquivo Json, então quero valores separados por vírgula e espaço como abaixo.

Lucy, Tom, Nicol, Akash, Maçã

Obrigado!
Este comentário foi feito pelo moderador no site
Olá, Manikanta
Neste caso, você pode aplicar a função definida pelo usuário abaixo:

Function MultipleValues(work_range As Range, criteria As Variant, merge_range As Range, Optional Separator As String = ",") As Variant
Dim outcome As String
On Error Resume Next
If work_range.Count <> merge_range.Count Then
MultipleValues = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To work_range.Count
If work_range.Cells(i).Value = criteria Then
outcome = outcome & Separator & merge_range.Cells(i).Value
End If
Next i
If outcome <> "" Then
outcome = VBA.Mid(outcome, VBA.Len(Separator) + 1)
End If
MultipleValues = outcome
Exit Function
End Function


Depois de colar o código, use esta fórmula: =MultipleValues($A$2:$A$15,D2,$B$2:$B$15,", ")

Por favor, tente, espero que isso possa ajudá-lo!
Se você ainda tiver algum outro problema, por favor, comente aqui.
https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-return-multiple-matching-1.png
Este comentário foi feito pelo moderador no site
Olá Skyyang,

Isso está funcionando agora, obrigado por sua resposta rápida.

É muito útil para mim mais uma vez Obrigado por sua ajuda.

Saudações,
Manikanta.
Avaliado 5 fora do 5
Este comentário foi feito pelo moderador no site
No soy programador pero necesito ayuda para que la función de abajo en place de returnme esto

S-01-08-0017->Micro Coluna 1R, Preto, Aço Inoxidável -Extremidade,->4;S-01-08-0057->Micro Coluna 2R, Preto, Aço Inoxidável -Extremidade,->2

me devuelva los valores em linhas diferentes.
S-01-08-0017->Micro Coluna 1R, Preto, Aço Inoxidável -Extremidade,->4
S-01-08-0057->Micro Coluna 2R, Preto, Aço Inoxidável -Extremidade,->2

A função é:
Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Atualizar por Extendoffice
Escurecer eu enquanto
Dim xRet As String
For I = 1 To LookupRange.Columns(1).Cells.Count
Se LookupRange.Cells(I, 1) = LookupValue Então
Se xRet = "" Então
xRet = LookupRange.Cells(I, ColumnNumber) & Char
Outro
xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
Se acabar
Se acabar
Seguinte
SingleCellExtract = Left(xRet, Len(xRet) - 1)
Função final
Este comentário foi feito pelo moderador no site
Olá Yeri,
Você quis dizer dividir uma célula em várias linhas com base no caractere de ponto e vírgula?
Nesse caso, o seguinte código VBA pode ajudá-lo:
Sub SplitAll()
    Dim xRg As Range
    Dim xRg1 As Range
    Dim xCell As Range
    Dim I As Long
    Dim xAddress As String
    Dim xUpdate As Boolean
    Dim xRet As Variant
    On Error Resume Next
    xAddress = Application.ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("Please select a range", "Kutools for Excel", xAddress, , , , , 8)
    Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
    If xRg Is Nothing Then Exit Sub
        If xRg.Columns.Count > 1 Then
            MsgBox "You can't select multiple columns", , "Kutools for Excel"
            Exit Sub
            End If
            Set xRg1 = Application.InputBox("Split to (single cell):", "Kutools for Excel", , , , , , 8)
            Set xRg1 = xRg1.Range("A1")
            If xRg1 Is Nothing Then Exit Sub
                xUpdate = Application.ScreenUpdating
                Application.ScreenUpdating = False
                For Each xCell In xRg
                    xRet = Split(xCell.Value, ";")
                    xRg1.Worksheet.Range(xRg1.Offset(I, 0), xRg1.Offset(I + UBound(xRet, 1), 0)) = Application.WorksheetFunction.Transpose(xRet)
                    I = I + UBound(xRet, 1) + 1
                Next
                Application.ScreenUpdating = xUpdate
            End Sub

Por favor, tente, espero que possa ajudá-lo!
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL