Ir ao conteúdo
  • Cadastre-se

Armazenar conteúdo de várias células em uma única célula (concatenar automaticamente)


Ir à solução Resolvido por Visitante,

Posts recomendados

Prezados,

 

Não sei se minha dúvida é possível de ser solucionada.

 

Estou elaborando uma planilha que agrupa materiais iguais e faz o somatório de suas quantidades. As fórmulas para agrupar os materiais e realizar o somatório  já consegui através de pesquisas em fóruns da internet.

 

Cada material desse, tem um número de item. Por exemplo, tenho as colunas “Item”, “Material” e “Quantidade”. O “Material A” tem número de item 1.1, um “Material B” qualquer tem número de item 1.2, um “Material A” novamente tem número de item 1.3, o “Material C”, por sua vez, é o item 1.4... e por aí vai. Perceba que um mesmo material tem número de item distinto.

 

Na planilha dos materiais agrupados quero escrever em uma célula numa coluna “itens” os número de itens de cada material que foi agrupado, separados por ; (ponto e vírgula). Por exemplo: Para o “Material A” agrupado, a coluna “itens” vai mostrar: 1.1; 1.4.

 

Basicamente é pegar os conteúdos de diferentes células e escrever em uma única célula, separando cada conteúdo por ponto e vírgula.

Não sei se ficou claro...

 

No link abaixo tem um exemplo da planilha.

https://www.dropbox....P3ztv9uk4a?dl=0

 

Se algum colega conseguir me ajudar, agradeço! Nem que seja para dizer que não é possível o que estou querendo... pelo menos servirá para que eu desencane dessa ideia e tente outra alternativa. rsrsrs

 

Abraço!

Link para o comentário
Compartilhar em outros sites

  • Solução

Olá, Alexandre.

 

Se quiser experimentar esta solução que utiliza UDF instale o código abaixo em um módulo comum, assim:
1. copie o código daqui
2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA
3. no menu do editor >> Inserir >> Módulo
4. cole o código na janela em branco que vai se abrir
5. feito! 'Alt+Q' para retornar para a planilha

Function Itens() Dim m As Range, i As String   Application.Volatile   For Each m In Range("B4", Cells(Rows.Count, 1).End(xlUp))     If m.Value = Application.Caller.Offset(, 1).Value Then       i = i & m.Offset(, -1).Value & "; "     End If   Next m  Itens = Left(i, Len(i) - 2)End Function

Depois coloque esta função em 'D4' =Itens() e arraste para baixo

Não ficou claro se você quer o resultado na mesma planilha, como no exemplo que você postou ou se quer em outra planilha. Se for o segundo caso, teste primeiro na planilha que você postou e se o resultado for o esperado tente alterar o código para colocar a função em outra planilha. Retorne se precisar de ajuda para alterar.

 

obs. funciona também se a lista de materiais (coluna 'B') ou a lista de códigos (coluna 'A') forem alteradas.

Link para o comentário
Compartilhar em outros sites

hehehehehe

 

Osvaldo, você é fera!

 

Ficou perfeito!

 

Exatamente o que eu estava querendo!

 

Gostaria muito de aprender a fazer essas implementações no excel... é VBA? Tem algum material para me indicar (para iniciantes)?

Se não for abusar demais, gostaria que você comentasse cada linha do código que postou... a função de cada linha.

 

Muito obrigado!

 

Vou marcar como resolvido!

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!