fiz uma macro que pega o valor de varias colunas
tira as duplicatas,
organiza em ordem crescente
e cola em uma coluna guia
até que funciona, mas acho que estou fazendo muita volta para pouca coisa
tipo
a Coleção eu não sei pegar a quantidade de itens que tem nela "mas tenho certeza que já fiz isso"
(poderia até fazer um loop para isso "Mas...")
com a quantidade poderia adicionar os valores direto na array já redimensionada
ou
talvez ordenar a própria coleção (não consegui)
então qualquer ideia para melhorar a macro é bem vinda
Sub OrganizaData()
Dim Unicos As New Collection
Inicio
Gdd = 3: Li = 105
' apaga coluna Guia
Range(Cells(Li, Gdd), Cells(Rows.Count, Gdd).End(xlUp)).ClearContents
On Error Resume Next
'adiciona todas as colunas de datas em ums coleção sem repetir valores
For lot = 1 To Cells(10, "F").Value2
Cdi = Cells(1, Cells(15, lot).Value2).Column ' O endereço dessas colunas estão em uma tabela
For L = Cells(Li - 1, Cdi).End(xlDown).row To Cells(Rows.Count, Cdi).End(xlUp).row
valu = Cells(L, Cdi).Value2
If valu <> "" Then Unicos.Add valu, CStr(valu)
Next: Next
lid = Li
'passa valores da coleção para a coluna Guia (NÃO SEI PEGAR O TOTAL DE VALORES DA COLEÇÃO)
For Each Valor In Unicos
Cells(lid, Gdd).Value2 = Valor
lid = lid + 1
Next Valor
'Adiciona coluna GUIA em um ARRAY "Coluno"
ColunO = Range(Cells(Li, Gdd), Cells(Rows.Count, Gdd).End(xlUp)).Value2
'organiza ARRAY ColunO em ordem crescente (Linha)
Lfim = UBound(ColunO, 1)
Lx = 1: i = Lx + 1
Do
A = ColunO(Lx, 1): b = ColunO(Lx + 1, 1)
If A > b Then
ColunO(Lx, 1) = b: C = A
ColunO(Lx + 1, 1) = C
If Lx > 1 Then Lx = Lx - 1
Else
Lx = i: i = i + 1
End If
Loop Until Lx = Lfim
'cola Coluno na coluna de guia
Range(Cells(Li, Gdd), Cells(Rows.Count, Gdd).End(xlUp)).Value2 = ColunO
Final
End Sub
Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.
"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"
Postado : 29/12/2014 11:50 pm