Ir ao conteúdo
  • Cadastre-se

Excel extrair e ordenar dados


Ir à solução Resolvido por deciog,

Posts recomendados

amigos, estou precisando extrair e ordenar nomes de uma tabela com várias colunas e linhas excluindo os duplicados. o resultado deve ficar em uma coluna por ordem alfabética.

é possível? coloquei uma tabela exemplo em anexo.

 

agradeço qualquer ajuda!

 

abraço!

 

Extrair.Ordenar.Nomes.xlsx

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@-=|zami|=-

 

Eu apliquei uma macro em VBA que transpôs para uma coluna, e em outra coluna apliquei uma fórmula com intervalo dinâmico, que colocou em ordem alfabética.

 

Confira na planilha e dê retorno.

 

[]s 

24_09_21_Transpor para uma coluna e ordenar_Patropi.zip

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você copia os nomes da tabela um abaixo do outro.  Salva num arquivo de texto digamos: bagunca.txt. Ai entra no prompt de comando e usa uma código mais ou menos assim:

 

for /f "Delims=" %a in ('type bagunca.txt ^|sort') do find "%a" "NomesOrdenados.txt" || >>NomesOrdenados.txt echo %av

 

Isso vai criar um arquivo chamdo NomesOrdenados.txt, ai é só copiar para o excel...

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@-=|zami|=- , bom dia.

 

na célula a14 usa esta formula e arraste para baixo

=se(b14="";"";máximo($a$13:a13)+1)

depois na célula b14 usa esta formula e arraste pra baixo

 

=seerro(índice($a$2:$f$11;menor(se(menor(se(cont.se($b$13:b13;$a$2:$f$11)+écél.vazia($a$2:$f$11)=0;cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1;"");1)=se(écél.vazia($a$2:$f$11);"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1);lin($a$2:$f$11)-mínimo(lin($a$2:$f$11))+1);1);corresp(mínimo(se(cont.se($b$13:b13;$a$2:$f$11)+écél.vazia($a$2:$f$11)>0;"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1));índice(se(écél.vazia($a$2:$f$11);"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1);menor(se(menor(se(cont.se($b$13:b13;$a$2:$f$11)+écél.vazia($a$2:$f$11)=0;cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1;"");1)=se(écél.vazia($a$2:$f$11);"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1);lin($a$2:$f$11)-mínimo(lin($a$2:$f$11))+1);1);;1);0);1);"")

 

confere se é destas forma que desejas
 
se foi útil clica no curtir, na mãozinha, é uma forma de agradecimento pela ajuda
 
decio
 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

amigos, muito obrigado pela atenção em me ajudar!

 

Em 24/09/2021 às 17:58, Patropi disse:

@-=|zami|=-

 

Eu apliquei uma macro em VBA que transpôs para uma coluna, e em outra coluna apliquei uma fórmula com intervalo dinâmico, que colocou em ordem alfabética.

 

Confira na planilha e dê retorno.

 

[]s 

olá, @Patropi! na sua solução, a tabela não pode ter células vazias correto? quando eu tentei refazer a transposição, a macro utilizou a coluna à direita da coluna com a transposição inicial (coluna "Nome"). mesmo com a coluna inicial vazia isso acontece. assim a fórmula que ordenaria os nomes não encontra nada, pois está vinculada à coluna inicial e os dados estão na coluna à direita. a fórmula não exclui os valores duplicados, correto?

 

Em 24/09/2021 às 18:11, ricardo_br disse:

Você copia os nomes da tabela um abaixo do outro.  Salva num arquivo de texto digamos: bagunca.txt. Ai entra no prompt de comando e usa uma código mais ou menos assim:

 

for /f "Delims=" %a in ('type bagunca.txt ^|sort') do find "%a" "NomesOrdenados.txt" || >>NomesOrdenados.txt echo %av

 

Isso vai criar um arquivo chamdo NomesOrdenados.txt, ai é só copiar para o excel...

olá, @ricardo_br! eu tenho que primeiro ordenar manualmente os nomes em uma coluna e salvá-los em outro arquivo e daí aplico o comando sugerido, certo? mas a minha ideia é tentar automatizar essa operação.

 

 

Em 25/09/2021 às 09:12, deciog disse:

@-=|zami|=- , bom dia.

 

na célula a14 usa esta formula e arraste para baixo

=se(b14="";"";máximo($a$13:a13)+1)

depois na célula b14 usa esta formula e arraste pra baixo

 

=seerro(índice($a$2:$f$11;menor(se(menor(se(cont.se($b$13:b13;$a$2:$f$11)+écél.vazia($a$2:$f$11)=0;cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1;"");1)=se(écél.vazia($a$2:$f$11);"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1);lin($a$2:$f$11)-mínimo(lin($a$2:$f$11))+1);1);corresp(mínimo(se(cont.se($b$13:b13;$a$2:$f$11)+écél.vazia($a$2:$f$11)>0;"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1));índice(se(écél.vazia($a$2:$f$11);"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1);menor(se(menor(se(cont.se($b$13:b13;$a$2:$f$11)+écél.vazia($a$2:$f$11)=0;cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1;"");1)=se(écél.vazia($a$2:$f$11);"";cont.se($a$2:$f$11;"<"&$a$2:$f$11)+1);lin($a$2:$f$11)-mínimo(lin($a$2:$f$11))+1);1);;1);0);1);"")

 

confere se é destas forma que desejas
 
se foi útil clica no curtir, na mãozinha, é uma forma de agradecimento pela ajuda
 
decio
 

 

olá, @deciog! apliquei a sua fórmula que retornou apenas "Adão" do começo ao fim na coluna.

 

posso contar com mais um pouco da atenção de vocês para solucionar essa questão?

 

abraço!

@deciog me desculpe. copiei a fórmula e esqueci dos brackets na fórmula. ficou perfeito! 

muito obrigado!

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!