Ir ao conteúdo
  • Cadastre-se

Alinhar ordenação excel


Posts recomendados

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

Link para o comentário
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
 

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