Ciao Gik.
Continuo a pensare che il filtro automatico dovrebbe essere sufficiente, in quanto:
-per l’ obiezione che il filtro non funziona su celle protette, basta che quando proteggi il foglio spunti la voce “Usa filtro automatico”
-per l’ obiezione “non resta traccia…”, beh basta rifiltrare e vedi tutti i grafici che avevi creato, PURCHE’ i dati siano rimasti invariati; ma se i dati variano e vuoi tenerne traccia sei costretto in ogni caso a farne delle “immagini” periodiche, su cui puoi ricreare i grafici applicando il filtro automatico.
Comunque, immaginando che ci siano anche altri motivi contrari al filtro, puoi usare la macro seguente:
- Codice: Seleziona tutto
Sub Gikk()
ColD = "M1" '<<-- Colonna Dati
GraphWS = "GRAFICI" '<<-- Foglio di lavoro per i grafici
StartWS = ActiveSheet.Name
If StartWS = GraphWS Then
MsgBox ("Partire dal foglio Dati; abort")
Exit Sub
End If
Sheets(GraphWS).Select
Range("A1").Select
Cells.Select
Selection.Clear
Range("A1").Select
Sheets(StartWS).Select
RowD = Range(ColD).Offset(65530, 0).End(xlUp).Row
For I = 1 To RowD - 1
On Error Resume Next
Sheets(StartWS).Select
Range(ColD).Offset(I, 0).Select
CD = Selection.Value
CI = Selection.Offset(0, 1).Value
Sheets(GraphWS).Select
OffInd = Application.WorksheetFunction.Match(CI, Range("A1:IV1"), 0)
If OffInd = 0 Then
Range("IV1").End(xlToLeft).Offset(0, 1).Select
Selection.Value = CI
OffInd = Selection.Column
End If
Range("A1").Offset(65530, OffInd - 1).End(xlUp).Offset(1, 0).Value = CD
OffInd = 0
Application.ScreenUpdating = True
Application.ScreenUpdating = False
Next I
Sheets(GraphWS).Select
On Error GoTo 0
IndNum = Range("IV1").End(xlToLeft).Column
For I = 2 To IndNum
Range(Cells(2, I), Cells(65536, I).End(xlUp).Address).Name = "Grafi" & I - 1
Next I
End Sub
Essa richiede la presenza di un foglio di servizio chiamato GRAFICI (il nome puo’ essere cambiato), che viene pulito dalla macro, poi i dati del foglio di partenza vengono mappati su questo foglio in colonne diverse secondo il loro indice; non volendo lavorare con un elenco di indici fissi, le colonne vengono intestate man mano che sull’ elenco dati vengono trovati nuovi indici (quindi potrebbe partire con C e poi avere ad esempio A). La macro genera anche N range (quanti sono gli indici) chiamati Grafi1, Grafi2, etc: se usi questi nomi come origine dati quando crei i grafici potrai gestire automaticamente la lunghezza variabile degli elenchi.
La colonna dei dati e’ impostabile; ho assunto che i dati partano dalla riga 2, e che l’ indice sia nella colonna alla destra.
Lanciare la macro dal foglio che contiene i dati.
Fai sapere se cosi’ e’ ok.
Ciao.