Notifications
Clear all

Filtrar e Classificar Valores Exclusivos - Via VBA

7 Posts
2 Usuários
0 Reactions
2,010 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,
Preciso Preencher EK14:EK1012, automaticamente, com as Datas de EA14:EA1012 e EC14:EC1012, e classificado da Menor Para a Maior Data, Com valores exclusivos, e sem Datas Vazias.
Obs: Graças ao Deciog, tá funcionando por fórmula, MAS, talvez por ser Matriz, deixou a planilha demasiadamente lenta.
Há outra alternativa? Via VBA, etc..
Grato,
Pedro

 
Postado : 07/03/2017 7:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!

Seria?

Não testado!!

Sub AleVBA_23846()
Dim rSort As Range

Application.ScreenUpdating = False

With ThisWorkbook.Worksheets("Gráficos")
    .Range("EA14:EA1012").Copy
    .Range("EK14").PasteSpecial xlPasteValues
    Set rSort = .Range("EK13").CurrentRegion
    .Sort.SortFields.Clear
    .Sort.SortFields.Add Key:=rSort.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With .Sort
        .SetRange rSort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With

rSort.RemoveDuplicates Array(1, 2), xlYes

Application.ScreenUpdating = True

End Sub

Att

 
Postado : 07/03/2017 8:47 am
(@hronconi)
Posts: 314
Reputable Member
 
Sub Classificar()
    Range("EF14:EF1012").Select
    Selection.Copy
    Range("EK14").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveSheet.Range("$EK$14:$ER$1012").RemoveDuplicates Columns:=1, Header:=xlNo
    ActiveWorkbook.Worksheets("Gráficos").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Gráficos").Sort.SortFields.Add Key:=Range("EK14:EK1012") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Gráficos").Sort
        .SetRange Range("EK14:EK1012")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("EK14").Select
    Selection.Delete Shift:=xlUp
End Sub
 
Postado : 07/03/2017 8:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado, Alexandre e Henrique, mas
Não funcionou.

Não se esqueçam que são 2 colunas com Intervalos (EA14:EA1012 e EC14:EC1012) que devem ser transportados para EK14:EK1012, automaticamente,
e classificados da Menor Para a Maior Data, Com valores exclusivos, e sem Datas Vazias.

Aguardo,
Pedro

 
Postado : 07/03/2017 9:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Parece fácil, mas não é.
Alguma sugestão em VBA?

 
Postado : 09/03/2017 5:31 am
(@hronconi)
Posts: 314
Reputable Member
 

O que você quer dizer com a palavra automaticamente?

 
Postado : 09/03/2017 7:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O que você quer dizer com a palavra automaticamente?

É só pra dar ênfase.
Na verdade, preciso Preencher EK14:EK1012 com as Datas de EA14:EA1012 e EC14:EC1012, e classificado da Menor Para a Maior Data, Com valores exclusivos, e sem Datas Vazias.

Grato pela atenção,
Pedro

 
Postado : 09/03/2017 10:06 am