Página 1 de 1

Buscar datas por ordem e horas correspondente aos nomes

Enviado: 21 Mar 2020 às 23:40
por albinosergio
Boa noite senhores,
Segue anexo uma planilha modelo para melhor entendimento do que preciso, particularmente não acredito que terei sucesso, mas tenho uma ponta de esperança, ficarei muitíssimo feliz se vocês puderem ajudar-me. Independente disso vou continuar tentando por aqui em conseguir o resultado que preciso na expectativa de suas ajudas.
Um abraço grande e agradecimento pela costumeira presteza.

Re: Buscar datas por ordem e horas correspondente aos nomes

Enviado: 22 Mar 2020 às 11:31
por osvaldomp
Olá, Albino.
Se você quiser testar uma solução via macro então experimente o código abaixo.
Código: Selecionar todos
Sub ReplicaDatasHoras()
 Dim c As Range, rng As Range, n As Range, fAdd As String
 If [M3] <> "" Then Range("M3:R" & Cells(Rows.Count, 12).End(3).Row).Value = ""
 Set rng = Range("A3:J" & Cells(Rows.Count, 1).End(3).Row)
 For Each c In Range("L3:L" & Cells(Rows.Count, 12).End(3).Row)
  Set n = rng.Find(c.Value, lookat:=xlWhole)
  If Not n Is Nothing Then
   fAdd = n.Address
    Do
     Cells(c.Row, Columns.Count).End(1)(1, 2) = Cells(n.Row, 1)
     Cells(c.Row, Columns.Count).End(1)(1, 2) = Cells(2, n.Column + (n.Column Mod 2 = 1))
     Set n = rng.FindNext(n)
    Loop While Not n Is Nothing And n.Address <> fAdd
  End If
 Next c
 On Error Resume Next
 Set n = rng.Find([A1], lookat:=xlPart)
End Sub
EDIT - feita a correção no código sugerida pelo colega JCabral no post #53080 mais abaixo.

obs.
1.antes de rodar o código limpe J19:P20
2. "... mas ao todo são 9 colunas com nomes" ~~~> devido a essa observação que você colocou na planilha, então antes de rodar o código desloque a tabela dos resultados de J1 para L1
3. nos seus resultados há duas incorreções: Marlene ~~~> na terceira data e Norma ~~~> no segundo horário

Re: Buscar datas por ordem e horas correspondente aos nomes

Enviado: 22 Mar 2020 às 16:54
por fernandopaz
Amigo. Uma sugestão é criar o banco de dados de forma diferente. Veja na planilha BANCO DE DADOS que exemplifiquei como seria o NOVO BANCO DE DADOS, que deve corresponder à sua agenda de consultas.
A partir desta nova ordem do banco de dados é possível fazer FILTRO AUTOMÁTICO, que está na Guia FILTRO. Daí basta clicar no botão FILTRO que os dados são gerados no relatório das colunas B, C e D. Note que na coluna L há uma lista com todos os nomes das clientes que constam no BANCO DE DADOS. Mas, apenas uma vez cada nome. Esta lista serve para alimentar a LISTA SUSPENSA que aparece na célula F3, para selecionar um nome que queira pesquisar. També há uma fórmula para contar a quantidade de vezes que cada cliente consultou. Mas cada vez que selecionar um nome (ou mesmo quando deletar e deixar sem nenhum nome) é preciso clicar no botão FILTRAR. É uma opção.

Re: Buscar datas por ordem e horas correspondente aos nomes

Enviado: 22 Mar 2020 às 21:34
por JCabral
osvaldomp escreveu:Olá, Albino.
Se você quiser testar uma solução via macro então experimente o código abaixo.
Código: Selecionar todos
Sub ReplicaDatasHoras()
 Dim c As Range, rng As Range, n As Range, fAdd As String
 If [M3] <> "" Then Range("M3:R" & Cells(Rows.Count, 12).End(3).Row).Value = ""
 Set rng = Range("A3:J" & Cells(Rows.Count, 1).End(3).Row)
 For Each c In Range("L3:L" & Cells(Rows.Count, 12).End(3).Row)
  Set n = rng.Find(c.Value)
  If Not n Is Nothing Then
   fAdd = n.Address
    Do
     Cells(c.Row, Columns.Count).End(1)(1, 2) = Cells(n.Row, 1)
     Cells(c.Row, Columns.Count).End(1)(1, 2) = Cells(2, n.Column + (n.Column Mod 2 = 1))
     Set n = rng.FindNext(n)
    Loop While Not n Is Nothing And n.Address <> fAdd
  End If
 Next c
End Sub
obs.
1.antes de rodar o código limpe J19:P20
2. "... mas ao todo são 9 colunas com nomes" ~~~> devido a essa observação que você colocou na planilha, então antes de rodar o código desloque a tabela dos resultados de J1 para L1
3. nos seus resultados há duas incorreções: Marlene ~~~> na terceira data e Norma ~~~> no segundo horário

Caro Osvaldo, achei esse código fantástico, apenas acho seria prudente colocar esse Find para valores exactos, veja o que acontece se em vez de ter Neuzamira tivesse Neuzamaria.

Re: Buscar datas por ordem e horas correspondente aos nomes

Enviado: 22 Mar 2020 às 22:27
por osvaldomp
Caro Jorge, tens razão. Embora nos exemplos colocados não exista a necessidade de Coincidir conteúdo da célula inteira , mas isso é conveniente pois poderá ocorrer com outros dados.

Editei o post em que está o código e fiz a correção. Grato pela oportuna observação. :)

Re: Buscar datas por ordem e horas correspondente aos nomes

Enviado: 23 Mar 2020 às 21:09
por albinosergio
Excelente, muito obrigado por mais essa ajuda