Risolto Estrapolare dati da tabella per un grafico

frankyTV

Nuovo utente
11 Agosto 2019
3
1
Excel 2016
0
Ciao a tutti,

mi si è posto un piccolo problema che credo sia facilmente risolvibile ma le mie limitate conoscenze di excel non mi aiutano molto.
Vorrei semplicemente creare un grafico a barre che abbia come dati solo alcuni dei dati della tabella excel su cui sto lavorando (nel caso specifico i migliori 5 risultati della tabella nella colonna "media"); vorrei farlo evitando di ordinare/filtrare/toccare la tabella ma agendo direttamente dalla progettazione del grafico.

Grazie
 

Allegati

Marius44

VBA Expert
Moderatore
Expert
9 Settembre 2015
5.437
63
75
Catania
Excel2010
125
Ciao
Dai uno sguardo all'allegato e cambia il valore in K1
Ho utilizzato VBA.
Nel Modulo di classe del Foglio c'è questo codice
Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("K1")) Is Nothing Then
  Call BestValues
End If
End Sub
Mentre in un Modulo standard c'è questo codice
Visual Basic:
Option Explicit

Sub BestValues()
Dim ur As Long, i As Long, j As Long
Dim city, vals, Rng As Range, cht As Object
Dim tmp1 As Double, tmp2 As String
Dim mx As Integer
ur = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
mx = Cells(1, 11)
If mx = 0 Then Exit Sub 'se vuoto esce
ActiveSheet.Range(Cells(2, 10), Cells(ur, 11)).ClearContents
ReDim city(1 To ur) As String
ReDim vals(1 To ur) As Double
For i = 2 To ur
  city(i - 1) = Cells(i, 1)
  vals(i - 1) = Cells(i, 2)
Next i
'ordino le variabili in base al valore di vals
For i = 1 To UBound(vals) - 1
  For j = i + 1 To UBound(vals)
    If vals(i) < vals(j) Then
      tmp1 = vals(i)
      vals(i) = vals(j)
      vals(j) = tmp1
      tmp2 = city(i)
      city(i) = city(j)
      city(j) = tmp2
    End If
  Next j
Next i
For i = 1 To mx
  Cells(i + 1, 10) = city(i)
  Cells(i + 1, 11) = vals(i)
Next
'elimino vecchio grafico se presente
On Error Resume Next
ActiveSheet.ChartObjects("migliori").Delete
On Error GoTo 0
'creo un nuovo grafico sulla base della nuova tabella e assegno nome
Set Rng = ActiveSheet.Range("J2:$K$" & mx + 1)
Set cht = ActiveSheet.Shapes.AddChart
cht.Chart.SetSourceData Source:=Rng
cht.Name = "migliori"
cht.Top = Range("M2").Top
cht.Left = Range("M2").Left
cht.Chart.Legend.Delete

Set Rng = Nothing
Set cht = Nothing
End Sub
Ti allego il file. Fai sapere. Ciao,
Mario
 

Allegati

  • Like
Reactions: Rubik72

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!