Ir ao conteúdo
  • Cadastre-se
vmauat

Alinhar ordenação excel

Recommended Posts

Bom Dia senhores. 

 

Eu tenho um banco de dados já montado, cuja ordenação é seguida pela coluna prontuários, com aproximadamente 8 mil linhas. 

 

Ocorre que agora surgiu uma nova varíável, que chamarei de variável "x", cujas informações estão distribuídas em várias linhas. Ou seja: 

 

Minha Tabela: 

22222               sim      não    2     7

22334               não      não   3     7

 

Dados novos: 

22222              sim         7     2

22222              12

22222              03

22334              não

 

Já fiz algumas tentativas e até conseguiria através das funções lógicas inserir linhas em branco em alinhar. O prolema é que não consigo jogar para a mesma linha as informações referentes às mesmas pastas. 

Seguem anexos abaixo.     

 

Desde já o meu muito obrigado. 

 

Link:   https://www.sendspace.com/file/fno30h

Modelo.xlsx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quiser experimentar esta solução que utiliza macro, instale o código abaixo em um módulo comum, assim:
1. copie o código daqui
2. a partir de qualquer das planilhas 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 e testar

para rodar o código:
6. tecle 'Alt+F8' >> selecione a macro correspondente >> Executar, ou insira um botão em qualquer planilha e vincule-o à macro ou vincule-a a um atalho de teclado (Alt+F8 > Opções).

 

Sub JuntaInfo() Dim LR As Long, LC As Long, WSo As Worksheet, WSd As Worksheet Dim prt As Range, c As Range, K As Long, m As Long, x As Long  Set WSo = Sheets("Banco de Dados Atual")  Set WSd = Sheets("Resultado Ideal")    With WSd     LR = .UsedRange.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row     LC = .UsedRange.Find(what:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column     .Range("A2", .Cells(LR, LC)).ClearContents     LR = WSo.Cells(Rows.Count, 2).End(xlUp).Row    .Cells(2, 1).Resize(LR - 1, 7).Value = WSo.Cells(2, 2).Resize(LR - 1, 7).Value    End With     Set WSo = Sheets("NovasInformações")   With WSo    For Each prt In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))     If prt.Value <> prt.Offset(-1).Value Then     x = 8     K = Application.CountIf(.[A:A], prt.Value)     Set c = WSd.[A:A].Find(prt.Value, lookat:=xlWhole)      If Not c Is Nothing Then       For m = 1 To K        WSd.Cells(c.Row, x).Resize(, 7).Value = prt.Offset(m - 1).Resize(, 7).Value        x = x + 7       Next m      Else: MsgBox "PRONTUÁRIO " & prt.Value & " NÃO ENCONTRADO"      End If     End If    Next prtMsgBox "concluído"End WithEnd Sub



obs.
1. antes de rodar o código exclua a coluna "V" (sem utilidade) da planilha "Resultado Ideal"
2. a cada vez que rodar, o código irá limpar a planilha "Resultado Ideal", manterá somente os cabeçalhos da linha 1
3. o código pode ser rodado a partir de qualquer das planilhas
4. no resultado vão aparecer todos os registros que estão no Banco, se quiser podem ser excluídos os que não têm novas informações
 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, caro OsvaldoMP.

 

Perfeito.

Muito obrigado por ter dispendido tempo e atenção para a questão. Não tenho palavras para te agradecer.

 

Um forte abraço.  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×