Allora...
Cominciamo col dire che e' meglio se ci sia un unico file, che comprenda anche i foglio "crescenti". Per prova io ho spostato i fogli MIS e OPFSI.
Continuiamo col dire che e' meglio eliminare la colonna E vuota, in modo da avere una tabella con dati contigui.
Poi vedo che tu gia' popoli il foglio Totali; benissimo.
Allora non ci resta che fare in modo che anche i fogli MIS, OPFSI, OPFSR e quant'altro risultino anche loro aggiornati e in ordine crescente.
Per questo usiamo una macro che "scatta" tutte le volte che il foglio "crescente" viene attivato, che legga nel foglio Totali le presenze, le incolla nel foglio crescente corrente, le ordina per valore crescente.
Il codice della macro e' questo:
- Codice: Seleziona tutto
Sub CreaCresc()
Dim ToT As Worksheet, LastA As Long, myC, HeAD As String
Dim CopyRan As Range
'
Set ToT = Sheets("Totali")
HeAD = "A5"
'
LastA = ToT.Cells(Rows.Count, 1).End(xlUp).Row
myC = Application.Match(ActiveSheet.Name, ToT.Range(HeAD).Resize(1, 100), 0)
Range("A3").Resize(100, 5).ClearContents
If Not IsError(myC) Then
Set CopyRan = ToT.Range(ToT.Range(HeAD).Offset(1, 0), ToT.Range(HeAD).Offset(LastA - Range(HeAD).Row, 3))
Set CopyRan = Application.Union(CopyRan, ToT.Range(ToT.Range(HeAD).Offset(1, myC - 1), ToT.Range(HeAD).Offset(LastA - Range(HeAD).Row, myC - 1)))
CopyRan.Copy
Range("A3").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("E3:E100"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Range("A3:E100")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3").Select
End If
End Sub
Va messa in un "Modulo standard" del vba, es Modulo1.
Operativamente, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Per farla eseguire nel momento in cui il foglio "crescente" viene attivato, dovremo inserire sui "Moduli vba dei singoli fogli crescenti" questo codice:
- Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Call CreaCresc
End Sub
Operativamente, partendo da Excel:
-Fai tasto dx sul tab col nome dei fogli di lavoro "crescente" (uno alla volta, ovviamente), scegli Visualizza codice
-ti si aprira' l'editor delle macro nella posizione corretta
-copi il codice e incollalo nel frame di dx
Prerequisito per il corretto funzionamento e' che il nome dei fogli "crescenti" sia lo stesso usato nelle intestazioni di riga 5 del foglio Totali.
Copia del tuo file Piattaforma prova.xls, con i due fogli crescenti e le macro inserite e' disponibile qui:
https://www.dropbox.com/s/yrou7pkrssbrh ... 4.xls?dl=0Vedi se ti va bene, nel qual caso completa il lavoro con gli altri fogli "crescenti".
Ciao