Domanda grafici creati dall'utente finale

LORENZO B

Utente abituale
30 Luglio 2016
174
18
29
reggello
2003
5
Buonasera a tutti,
ho una domanda molto particolare in quanto sto creando una Dashboard per degli utenti in cui visualizzare dei dati pescati da un Database all'interno di un figlio Excel, per fare questo ho predisposto delle tabelle Pivot, dei grafici Pivot e dei filtri per i dati e fino a qui tutto molto bello.

Quello che mi interessava capire è come poter permettere all'utente di scegliere quali debbano essere le colonne da vedere nei grafici, cioè in pratica l'utente può scegliere quali campi mettere a confronto, in pratica è come se se potesse fare da solo la sua Pivot, però vorrei fosse più semplice (Visto che non sono capaci).

Qualcuno di voi si è mai trovato in questa situazione, oppure conosce altri applicativi su cui poter fare una cosa del genere, perché nella mia esperienza non mi sono mai trovato a dover dare una cosa del genere ad un utente.

Grazie a tutti aspetto molto incuriosito una delle vostre risposte altamente professionali.
A presto
 

LORENZO B

Utente abituale
30 Luglio 2016
174
18
29
reggello
2003
5
Esatto Marius44 è quello che avevo un mente di fare anche io.
Infatti avevo pensato, che l'unico modo per permettere agli utenti di scegliere quali colonne mettere a confronto nei grafici sia quello di creare con un automatismo nella creazione delle tabelle da cui i grafici pescano.
Solo che questo risulta essere molto laborioso.

Tramite delle Query oppure altri metodi avresti un altro metodo?
 

Marius44

VBA Expert
Moderatore
9 Settembre 2015
7.815
145
77
Catania
Excel2010
398
Ciao
Non mi sembra affatto "laborioso" SmileFace
Come è scritto anche sul foglio, guarda "sotto" il Grafico. Vedrai che esso è collegato a quanto "recuperato" in base alla X e alla Y inserite nella prima riga.
Certo molto dipende dalla struttura dei tuoi dati.

Oppure, oppure ... dovresti rivolgerti al VBA

Ciao,
Mario
 

LORENZO B

Utente abituale
30 Luglio 2016
174
18
29
reggello
2003
5
Ciao Marius44 @Marius44 ,
la tua soluzione è molto pratica e anche intuitiva.
Solo che per poter creare dei grafici più interattivi dovrei cmq utilizzare le VBA.
Diciamo che i metodo tuo rimane ma la compilazione delle tabelle dinamiche deve avvenire tramite VBA, in quanto dovrei anche modifica l'intervallo selezionato dai grafici.
Dimmi se anche a te torna oppure se conosci una soluzione più Intelligente.
Grazie ancora per questa chiacchierata
 

Marius44

VBA Expert
Moderatore
9 Settembre 2015
7.815
145
77
Catania
Excel2010
398
Ciao
Senza conoscere la struttura del tuo file non è facile dare un suggerimento.
Come avrai notato il mio grafico trae origine dai dati che, in base alle lettere inserite in riga1, vengono evidenziati nell'intervallo sotto il Grafico stesso. Prova ad utilizzare la stessa tecnica. Oppure allega il tuo file (senza dati sensibili).

Ciao,
Mario
 

Abe76

Utente abituale
23 Agosto 2017
814
45
44
Milano
Office16/19xWin
40
Ciao Lorenzo, ed un saluto al carissimo Mario.
Per poter scegliere i valori da una pivot per modificare i dati del grafico, prova ad usare le slice.
Tramite questi piccoli filtri selezionabili è possibile filtrare i dati della pivot.
Però, come giustamente ha fatto presente Mario,
senza un dato alla mano è difficile capire come agire al meglio.
 

LORENZO B

Utente abituale
30 Luglio 2016
174
18
29
reggello
2003
5
Ciao Abe76 ho gli le Slice all'interno della mia Dashboard, ma le Slice permettono soltanto un filtraggio User Friendly dei record.
Quello che sto cercando di fare io invece permette all'utente non solo di filtrare i dati in Verticale ma anche di poter scegliere quali campi mostrare all'interno del grafico in modo autonomo.
 

Marius44

VBA Expert
Moderatore
9 Settembre 2015
7.815
145
77
Catania
Excel2010
398
Ciao a tutti
Forse ho trovato la soluzione che cerchi.
Nel file che allego (creato con dati di fantasia) occorre inserire delle "x" in riga 1 per le colonne e delle "x" in colonna 1 per le serie che si voglio mostrare nel grafico. Una volta evidenziate righe e colonne basta cliccare sul pulsante Mostra Grafico. Il resto è intuitivo.
Queste le macro utilizzate
Visual Basic:
Option Explicit

Sub Mostra_Grafico()
Dim ur As Long, uc As Long, LC As String, quadro As String
Dim mn As Double, mx As Double, i As Long, a As Integer, b As Integer
'
ur = Cells(Rows.Count, 2).End(xlUp).Row
uc = Cells(2, Columns.Count).End(xlToLeft).Column
LC = Replace(Cells(1, uc).Address(False, False), "1", "")
For i = 1 To ur
  If UCase(Cells(i, 1)) = "X" Then a = a + 1
Next i
For i = 1 To uc
  If UCase(Cells(1, 1)) = "X" Then b = b + 1
Next i
If a = 0 And b = 0 Then
  MsgBox "Occorre selezionare almeno" & vbLf & "UNA riga o UNA colonna", , "Avviso Errore"
  Exit Sub
End If
mn = WorksheetFunction.Min(Range(Cells(2, 3), Cells(ur, uc)))
mx = WorksheetFunction.Max(Range(Cells(2, 3), Cells(ur, uc)))
Call Elimina  'elimina il grafico, se presente
Call Mostra   'scopre tutte le righe e tutte le colonne
Call Nascondi 'nasconde le righe/colonne non evidenziate
quadro = "B2:" & LC & ur
Range(quadro).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range(quadro)
Cells(1, 10).Select
End Sub

Sub Nascondi()
Dim ur As Long, uc As Long, i As Long
Call Elimina
ur = Cells(Rows.Count, 2).End(xlUp).Row
uc = Cells(2, Columns.Count).End(xlToLeft).Column
'nasconde tutte le righe non evidenziate
For i = 3 To ur
  If Cells(i, 1) = "" Then
    Rows(i).EntireRow.Hidden = True
  End If
Next i
'nasconde tutte le colonne non evidenziate
For i = 3 To uc
  If Cells(1, i) = "" Then
    Columns(i).EntireColumn.Hidden = True
  End If
Next i
End Sub

Sub Mostra()
Call Elimina 'elimina il grafico, se presente
Cells.EntireRow.Hidden = False  'scopre tutte le righe
Cells.EntireColumn.Hidden = False 'scopre tutte le colonne
End Sub

Sub Elimina() 'elimina grafico precedente se c'è
On Error Resume Next
ActiveSheet.ChartObjects(1).Delete
On Error GoTo 0
End Sub
Fai sapere se è come te l'aspettavi. Ciao,
Mario

PS - Nel Foglio1 c'è altro tentativo ma non mi piace come vengono mostrati gli assi.
 

Allegati

Sostieni ForumExcel

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