Views

Important:

Quaisquer necessidades de soluções e/ou desenvolvimento de aplicações pessoais/profissionais, que não constem neste Blog podem ser tratados como consultoria freelance à parte.

...

9 de setembro de 2013

VBA Excel - Ordenando os dados de um gráfico - Graph data table sorting via vba




Sim, quanto mais criamos Dashboards, mais estes evoluem. Ao evoluir nossos Dashboards requerem certos tratamentos e cuidados para melhorarem a performance e a apresentação.

O que segue, é uma das muitas dúvidas que caem por aqui, em nosso Blog.

Como posso ordenar a série de dados que demonstro no meu gráfico cada vez que os respectivos dados são atualizados?

Sub RankTable()
    
    Dim chtTemp As Chart
    Dim vntData() As Variant
    Dim objSeries As Series
    Dim lngIndex As Long
    Dim rngSort As Range
    Dim lngRow As Long
    
    Set chtTemp = ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
    ReDim vntData(1 To chtTemp.SeriesCollection.Count, 1 To 2)
    
    lngIndex = 1
    For Each objSeries In chtTemp.SeriesCollection
        vntData(lngIndex, 1) = objSeries.Name
        vntData(lngIndex, 2) = Application.WorksheetFunction.Index(objSeries.Values, 1, objSeries.Points.Count)
        lngIndex = lngIndex + 1
    Next

    Set rngSort = Range("J1").Resize(UBound(vntData) - LBound(vntData) + 1, 2)
    With rngSort
        .Value = vntData
        .Sort .Cells(1, 2), xlDescending, , , , , , xlNo
        vntData = .Value
    End With
    
    For lngRow = rngSort.Rows.Count To 1 Step -1
        chtTemp.SeriesCollection(vntData(lngRow, 1)).PlotOrder = lngRow
    Next
End Sub

Sim acrescente este código a um módulo, ajuste as referências a planilha e fonte de dados e boa diversão!

Tags: Excel, Order, Sort, VBA, Andy Pope,




Nenhum comentário:

Postar um comentário

eBooks VBA na AMAZOM.com.br

Vitrine