Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Ordinamento grafico a barre - senza ordinare i dati

Ultimo Aggiornamento: 19/02/2021 15:41
Post: 31
Registrato il: 16/05/2017
Età: 38
Utente Junior
97-2003
OFFLINE
19/02/2021 09:33

Una domanda bizzarra ma non troppo: che voi sappiate esiste una opzione dei grafici a barre che renda possibile ordinare le barre per lunghezza (es.: le più lunghe in alto e via via a scendere)?
Senza ri-ordinare la tabella sorgente dei dati?
QUindi ordinare le barre direttamente sul grafico.

grazie
Post: 2.364
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
19/02/2021 12:00

ciao

uno dei tanti modi per fare questo lavoro

creare una tabella esterna ,e collegare il grafico a questa
ess. nel tuo file dove ho fatto una tabella che con formule si auto si
ordina dal piu' grande al piu' piccolo e riporta le varie sigle
quindi il tuo grafico lo collegato a questi

quindi se tu cambi dei valori nella tua tabella automaticamente questi vengono incolonnati e messi nel grafico subito senza fare nessun ordinamento

riallego il tuo file con questo inserito
si intende che le colonne con in database che si ordina le puoi nascondere

Ciao da locate
excel 2007 / 13
Post: 31
Registrato il: 16/05/2017
Età: 38
Utente Junior
97-2003
OFFLINE
19/02/2021 12:24

Grazie mille.
Quindi da quanto intuisco : non esiste un modo per "riordinare un grafico" ?
Post: 890
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
19/02/2021 15:41

Salve a tutti
Un modo c'è, ma devi fare ricorso al VBA.
La macro seguente assegna i valori a variabili, riordina le variabili in ordine decrescente, assegna dette variabili al Grafico.
Option Explicit

Sub Riordina()
'assegna i dati a varibili
'riordina le variabili dei valori numerici
'assegna al grafico dette variabili

Dim ur As Long, i As Long, j As Long
Dim asX(), asY(), temp1, temp2
ur = Cells(Rows.Count, 5).End(xlUp).Row
ReDim asX(1 To ur - 5)
ReDim asY(1 To ur - 5)
For i = 6 To ur
  asX(i - 5) = Cells(i, 5)
  asY(i - 5) = Cells(i, 6)
Next i
For i = 1 To UBound(asX) - 1
  For j = i To UBound(asX)
    If asY(i) < asY(j) Then
      temp1 = asY(i)
      temp2 = asX(i)
      asY(i) = asY(j)
      asX(i) = asX(j)
      asY(j) = temp1
      asX(j) = temp2
    End If
  Next j
Next i
ActiveSheet.ChartObjects(1).Activate
With ActiveChart
  .SeriesCollecti0n(1).Values = Array(asY())
  .SeriesCollecti0n(1).XValues = Array(asX())
End With
Cells(1, 1).Select
End Sub


Inseriscila in un Modulo standard e lanciala.
Potresti automatizzarla con le variazioni del Foglio.

Fai sapere. Ciao,
Mario
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 01:29. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com