Mi sono portato avanti; nell' ipotesi che le sezioni siano gestibili con le 26 lettere, incluse le "straniere", puoi usare la seguente macro:
- Codice: Seleziona tutto
Sub Vaccant()
Spaziatura = 1 'N° di righe tra classi diverse; CAMBIARE se serve
FoglioOut = "Sezioni" 'Foglio su cui si genera la lista; CAMBIARE se serve
'
Dim Sez(10) As Integer
Sheets(FoglioOut).Select
For I = 0 To 10 'Clear array
Sez(I) = 0
Next I
'Popola array
For I = 1 To 10
QtSez = Application.InputBox("Numero di SEZIONI per le Classi " & I, "---> Max 26; digita 0 per TERMINARE", , , , , , 1)
If QtSez > 0 And QtSez < 27 Then Sez(I) = QtSez Else GoTo Skipa
Next I
Skipa:
'Compila elenco
Range("A:A").ClearContents
Range("A1").Select
ActiveCell.Value = "Classe"
For I = 1 To 10
Selection.Offset(Spaziatura, 0).Select
If Sez(I) = 0 Then GoTo Skipb
For J = 1 To Sez(I)
Selection.Offset(1, 0).Select
ActiveCell.Value = I & " - " & Chr(64 + J)
Next J
Next I
Skipb:
Range("A1").Select
End Sub
Uso:
1) Nel tuo file, crea un foglio con nome Sezioni (doppioclick sul tab del nome, digita il nuovo nome, chiudi con Enter); questo foglio sara' azzerato nella colonna A e poi utilizzato per creare l' elenco.
2) Apri il vba editor, tramite Alt-F11; fai Menu ->Inserisci ->Modulo, e incolla il codice nel frame tutto bianco di dx
3) Torna su excel e assegna un tasto a questa macro: Menu ->Strumenti ->Macro ->Macro; selezioni Vaccant nelle' elenco che compare, premi Opzioni; nella casella "Tasto di scelta rapida" digita G (come Genera sezioni, G maiuscolo); conferma con Ok e chiudi con X
A questo punto, se premi Contr-Maiusc-G viene attivata la macro, che chiede in sequenza quante sezioni sono presenti per le Classi; digitando 0 si segnala il fine inserimento. L' elenco viene creato nel foglio Sezioni, colonna A.
Tra le classi, viene inserita una spaziatura di 1 riga vuota; si puo' cambiare modificando l' istruzione Spaziatura = 1; ad esempio
- Codice: Seleziona tutto
Spaziatura = 0
annulla la spaziatura.
Per cambiare il foglio in cui si genera l' elenco, si puo' modificare l' istruzione FoglioOut = "Sezioni"; ad esempio
- Codice: Seleziona tutto
FoglioOut = "Pippo"
Sconsiglio di usare nomi di default, quali Foglio1; se il foglio nonesiste nel file, la macro va in errore, si puo' chiudere con "Fine".
Saluti,