Gestire il campionato di calcio con Excel

Vediamo come si può gestire il campionato di calcio con Microsoft Excel. E' possibile gestire il calendario delle partite, i risultati, la classifica.

All'apertura di Microsoft Excel 2010 viene generalmente creato anche un nuovo foglio di calcolo di nome Cartel1.xls, il quale contiene 3 fogli di lavoro di nome Foglio1, Foglio2 e Foglio3, come si vede nella figura 1.

Ora rinominiamo "Foglio1" in "Squadre", "Foglio2" in "Calendario" e infine "Foglio3" in "Classifica" (per rinominare basta portare il puntatore del mouse in basso esattamente sopra 'Foglio1' e quindi fare clic con il tasto destro del mouse e scegliere la voce 'Rinomina').

Ci posizioniamo sul foglio 'Squadre', allarghiamo la prima colonna (A) a circa 14 cm. (menù 'Formato', 'Colonna', 'Larghezza') e scriviamo semplicemente i nomi delle 20 Squadre di serie A TIM in ordine alfabetico dalla riga 2 alla riga 21 (questo tutorial fa riferimento al campionato 2013-2014).

Infine salviamo l'intera cartella con il nome 'Campionato di Calcio.xlsx' ( figura 2).

In corrispondenza della prima riga e da colonna 'B' a colonna 'I' inseriamo ora le etichette di colonna 'PUNTI', 'GIOCATE', 'VINTE', 'PAREGG.', 'PERSE', 'GOL FATTI', 'GOL SUBITI' e 'PENALIZZ.': in quest'ultima colonna inseriremo gli eventuali punti di penalizzazione che potrebbero avere le squadre ad inizio campionato.

Per la stagione 2013-2014 sembra che non ci siano squadre con punti di penalizzazione (potrei sbagliarmi) quindi lasciamo la colonna 'I' in bianco ( figura 3).

Lasciamo per adesso in bianco anche la casella A1, nella quale verrà inserira la data dell'ultimo aggiornamento risultati in base al calendario delle partite: questa data verrà gestita sempre in modo automatico dalla macro che andremo a creare.

Selezioniamo ora il foglio di lavoro 'Calendario': sarà qui che svilupperemo passo passo il calendario delle partite relativo alle 19 giornate sia per il girone di andata che per quello di ritorno.

Per agevolare allo stesso tempo sia l' individuazione delle squadre nella fase di introduzione dei risultati per l'utente, sia la gestione dei dati da parte della macro VBA, abbiamo pensato ad una coppia di controlli 'Casella combinata' o 'Elenco a discesa' (gestiti anche via macro), per ciascuna partita e per ciascuna giornata.

La coppia di controlli sarà valida sia per l'andata che per il ritorno. I risultati saranno inseriti a sinistra per l'andata e a destra per il ritorno.

Nella figura 4 vediamo una anteprima di come apparirà il foglio 'Calendario' in corrispondenza della prima Giornata di campionato, andata: 25/8/2013, ritorno: 19/1/2014.

Torniamo al nostro foglio 'Calendario' e ci assicuriamo per prima cosa che sia 'abilitata' la 'visualizzazione' della Barra degli strumenti 'Moduli' (Menù 'Visualizza', 'Barre degli strumenti', 'Moduli')

A questo punto registriamo una Macro nel modo seguente: fate clic sulla scheda 'Sviluppo', quindi in corrispondenza dell' icona 'Macro' fate clic sul pulsantino 'Registra Nuova Macro': apparirà una finestra di dialogo, 'Registra Macro', nella quale fate clic sul pulsante di comando 'OK' senza badare al nome né alle altre impostazioni.

Vedrete comparire una micro finestra di dialogo 'Interrompi registrazione' con un controllo a forma di quadratino pieno: significa che ora qualunque azione sarà eseguita dall'utente verrà anche memorizzata in sequenza sotto forma di comandi VBA equivalenti nella macro stessa. Al termine faremo clic sul pulsantino a forma di quadratino pieno per interrompere la registrazione.

Le azioni da compiere sono le seguenti: selezionare il controllo 'Casella combinata' (controllo modulo) direttamente dall' icona Inserisci della scheda Sviluppo e 'trascinatela' (o 'disegnatela') in corrispondenza della casella C3.

A questo punto cercare di disegnarla esattamente 'attorno' alla casella c3, aggangiando e trascinando il mouse, in modo che le dimensioni del controllo corrispondano esattamente alle dimensioni della cella.

Se non riuscite a compiere il drag and drop (aggancia e trascina) dopo che il controllo casella combinata è già stato creato ed è visibile con i 4 quadratini attorno, provate a fare clic con il tasto destro del mouse quando il puntatore è sopra il controllo ed immediatamente dopo premete il tasto sulla tastiera.

Questo dovrebbe permettervi di 'riagganciare' il controllo e di modificarne posizione, altezza e larghezza anche più volte.

Selezionate la terza colonna (la colonna 'C'), quindi fate clic sul menù 'Formato', sottomenù 'Colonna', voce 'Larghezza colonne' ed impostate la larghezza a 17,57 centimentri.

Ora estendete nel modo già visto la larghezza della casella combinata fino alla nuova larghezza della colonna, in modo che il controllo possa sovrapporsi esattamente alla cella C3, come in figura 5. Al termine fate clic su 'Interrompi registrazione'.

Ora andiamo a modificare il codice della macro appena creata per adattarla ai nostri scopi.

Per visualizzare il codice VBA, occorre selezionare la scheda 'Sviluppo', quindi l' icona Visual basic': verrà aperta una nuova finestra, l'ambiente di sviluppo del Visual Basic for Application.

Nel controllo struttura a schede posto sulla sinistra rintracciate la voce 'VBAProject(<NOME DEL VOSTRO FILE PERSONALE.XLS>, di solito <PERSONAL.XLSB>)' ed espandetela.

In corrispondenza della cartella 'Moduli' dovreste ritrovare la macro appena creata su Modulo1 oppure sull'ultimo Modulo generato automaticamente in fase di registrazione della macro.

Nella figura 6 vedete le righe di codice generate automaticamente.

Eliminate tutte le righe tranne le seguenti:

- ActiveSheet.DropDowns.Add(98.25, 25.5, 48.75, 15.75).Select
- Columns("C:C").Select
- Selection.ColumnWidth = 17.57

La più importante è la prima, perché ci permette di comprendere il modo in cui Excel genera un nuovo oggetto 'DropDowns' (Casella Combinata) e lo posiziona sul foglio di lavoro corrente.

I numeri tra parentesi nel metodo Add, rappresentano rispettivamente l'ascissa, l'ordinata del primo punto in alto a sinistra, la larghezza e l'altezza, tutte misure espresse in punti per pollice o meglio in twips (che è una unità di misura specifica del VBA)

Ma perché vi abbiamo fatto vedere questo? Tra un momento lo saprete.

Senza perdere di vista l'obbiettivo generale, che, lo ricordiamo, è quello di disporre 20 caselle combinate in modo opportuno per ciascuna giornata di calendario, vediamo come si dovrebbe procedere manualmente per ciascun controllo.

Il primo passo, quello relativo alla selezione del controllo dal comando Inserisci della scheda Sviluppo e il relativo 'posizionamento' sulla cella lo abbiamo visto, ma non è finita qui.

Per poter avere l'elenco delle 20 squadre in ciascun controllo, occorre fare clic con il tasto destro del mouse mentre la prima casella è selezionata e successivamente fare clic sulla proprietà 'Formato Controllo' nel menù contestuale.

Apparirà la finestra di dialogo 'Formato Controllo', nella quale dovremo impostare manualmente alcune proprietà

In particolare selezioniamo la sottoscheda 'Controllo' ( figura 7) quindi, in corrispondenza della proprietà 'Intervallo di input' bisogna specificare il 'Range' di celle contenenti appunto le 20 squadre: nel nostro caso sarà, e questo vale per tutte le caselle combinate, 'Squadre!$A$2:$A$21' che specifica appunto l'intervallo A2-A21 del foglio di nome 'Squadre', ove abbiamo inserito precedentemente le 20 squadre in ordine alfabetico.

La proprietà 'Collegamento Cella' è ugualmente importantissima, perché dice ad Excel in quale cella sarà memorizzato il numero di riferimento (da 1 a 20) della squadra che l'utente selezionerà appunto, dall'elenco a discesa.

Nel nostro caso impostiamo sempre l'indirizzo della cella che resta 'dietro' la casella combinata e da questa quindi 'nascosta', nell'esempio la cella C3.

Per cui se l'utente selezionerà la squadra 'ATALANTA', in C3 verrà memorizzato il numero 1, se l'utente selezionerà la squadra 'BOLOGNA', in C3 verrà memorizzata il numero 2 e così via fino all' UDINESE che corrisponde al numero 20.

In questo modo la macro che aggiornerà la classifica non dovrà fare altro che leggere il valore nella cella dietro al controllo ed individuerà immediatamente l' elemento del vettore in cui memorizzare i risultati e quindi la squadra giusta, come vedremo.

A questo punto, per completare la programmazione del calendario del nostro campionato di calcio con Microsoft Excel 2010, possiamo procedere in 2 modi differenti: o facciamo un 'copia e incolla' per ciascuna casella combinata, con conseguente ridimensionamento a mano, una per una, per un totale di 20 caselle a giornata moltiplicato per 19 giornate, quindi per un totale di 380 caselle, oppure ci costruiamo delle macro opportune che compiano il lavoro per noi, vediamo come.

La prima cosa da fare è tornare alla finestra del VBA (basta premere contemporaneamente i tasti ALT e F11) oppure scheda 'Sviluppo', icona 'Visual Basic' ( figura 8).

Rinominiamo la Macro registrata precedente in 'InserisciCasellaCombinata()', quindi aggiungiamo queste righe, prima di ActiveSheet.DropDowns.Add(X, Y, W, H).Select (da notare che abbiamo sostituito i numeri con le variabili X,Y,W,H)

Nella prima parte della Sub impostiamo variabili e costanti.

Lo scopo di questa macro (o subroutine, non importa, perché come vedremo si richiamano allo stesso modo) è quello di generare automaticamente un controllo casella combinata, posizionarlo nella cella correntemente selezionata, adattarne automaticamente posizione, larghezza e altezza rispetto alle dimensioni grafiche della cella (quindi converrà preliminarmente stabilire altezza e larghezza delle celle del foglio di lavoro 'Calendario') ed infine, sempre automaticamente, impostare per noi le 2 proprietà chiave, e cioè 'Intervallo di Input' e 'Collegamento Cella'.

In particolare la macro determina, in base al numero di riga e di colonna relative alla cella corrente, le coordinate X e Y del primo punto in alto a sinistra, in modo da farle corrispondere esattamente con la posizione della cella corrente.

Per raggiungere questo scopo non fa altro che 'ciclare' (o 'scorrere') tutte le celle a sinistra e in alto e sommarne le dimensioni.

La larghezza W sarà pari alla larghezza della cella corrente, mentre l'altezza H sarà pari all'altezza della cella corrente.

La costante sFillRange che contiene l'indirizzo del range dove si trovano i nomi delle 20 squadre, serve a valorizzare la proprietà .ListFillRange (= Intervallo di Input).

L'istruzione ActiveCell.Address ricava infine automaticamente l'indirizzo della cella corrente (nell'esempio era: $C$3) per valorizzare la proprietà .LinkedCell (= Collegamento Cella)

Per eseguire la Macro di nome 'InserisciCasellaCombinata' (dopo avere selezionato la casella D4), basta fare clic sull' icona Macro nella scheda Sviluppo e selezionare dall'elenco la Macro con lo stesso nome, quindi fare clic sul pulsante di comando 'Esegui' ( figura 9).

Il risultato è quello visibile in figura 10: facendo clic sulla casella combinata è ora possibile scorrere la lista delle 20 squadre.

Se provate a controllare le proprietà manualmente, vi accorgerete che la macro ha operato correttamente.

Ok, ora abbiamo la macro per inserire una casella combinata singola, perché allora non proseguire, costruendo una macro che ci genera in un sol colpo tutte e 20 i controlli?

Detto, fatto! Ecco qui sotto la macro di nome 'Inserisci20CaselleCombinate', la quale non fa altro che spostare la cella selezionata per 20 volte e ogni volta richiama con una istruzione Call la Macro precedente, cioè 'InserisciCasellaCombinata' ( figura 11).

Ora basta posizionarsi sulla prima cella della giornata, per esempio in C3 per la prima, 12 righe più sotto per la seconda e così via, dopo aver impostato l'altezza di tutte le righe a 18 punti e la larghezza delle 2 colonne centrali (C e D) a cm.17,57.

Eseguendo la macro 'Inserisci20CaselleCombinate' per ciascuna giornata di campionato, siamo ora in grado di produrre tutte le 380 caselle richieste ( figura 12).

Gestire il campionato di calcio con Excel non significa limitarsi a gestirne il calendario, ma significa anche poter controllare, giornata per giornata, la classifica delle squadre, tenendo conto degli eventuali punti di penalizzazione, il numero delle partite giocate, quello delle partite vinte, pareggiate e perse, il numero delle reti fatte e di quelle subite.

Tenete presente che una volta costruito questo 'impianto', lo schema è adattabile a qualsiasi serie e stagione, quindi varrà anche per la stagione 2014-2015 e successive: basterà cambiare i nomi delle 20 squadre nel range Squadre!$A$2-$A$21 e naturalmente aggiornare il foglio 'Calendario', giornata per giornata.

Salvando l'intera cartella con un nome differente, ad esempio 'Campionato di Calcio Serie B' è possibile gestire qualsiasi altra serie.

Se il numero delle squadre fosse diverso da 20 e/o il numero delle giornate diverso da 19 (andata e ritorno) allora bisognerebbe modificare le macro e le impostazioni sui fogli.

Ma l'operazione non sarebbe impossibile, con questo schema basta cambiare qualche indirizzo di cella e il gioco è fatto!

Ma veniamo ora alla Macro che gestisce i risultati e compila la classifica ufficiale e aggiorna tutte le statistiche.

Naturalmente diamo per scontato che si sia preventivamente provveduto ad aggiornare non solo la programmazione delle partite, ma anche i risultati.

Nel foglio Classifica verrà visualizzato l' elenco delle squadre non più in ordine alfabetico ma appunto in base ai punti ottenuti. Al momento di pubblicazione di questo tutorial (5/8/2013) il campionato 2013-2014 non é ancora partito per cui non c'è ancora alcun risultato, il foglio Classifica sarà comunque visibile come da figura 13

Vediamo ora come funziona la macro principale, nel nostro caso si chiama Macro1, ma voi potete naturalmente dargli il nome più appropriato, ad esempio 'CompilaClassifica'.

Nell'esempio, la nostra macro viene attivata dalla pressione contemporanea dei tasti e lettera 'p' minuscola, e soltanto se la cella attiva contiene una data e si trova nella colonna 'C' per il girone di andata, oppure sulla colonna 'F' per il girone di ritorno ( figura 14).

Al termine della macro, che quindi va utilizzata 1 volta per aggiornare i dati di 1 sola giornata alla volta (andata o ritorno), il cursore si posiziona automaticamente sulla giornata successiva (in corrispondenza della data, naturalmente), in modo da poter subito aggiornare i risultati successivi oppure uscire da Excel e chiudere la cartella.

I dati temporanei vengono salvati sia sul foglio 'Squadre' (dove le squadre restano in ordine alfabetico, altrimenti non funzionerebbero più le 380 caselle combinate!) sia sul foglio 'Classifica', dove invece le squadre vengono riordinate in modo decrescente rispetto al punteggio, al netto degli eventuali punti di penalizzazione.

Nella zona 'Generale', riservata alle 'Dichiarazioni', di un qualsiasi modulo VBA, (di solito è PERSONAL.XLSB) vengono preparati le matrici (o vettori), le variabili pubbliche e le eventuali costanti ( figura 15)

La prima parte della Macro ( figura 16) fa le seguenti cose:

1. Dichiara alcune variabili locali, come strDt per la data della giornata da aggiornare, Riga per gestire la riga corrente e Andata (valore logico vero o falso) per stabilire se si tratta di Andata o di Ritorno.

2. Seleziona il foglio 'Calendario', quindi memorizza in strDt la data della giornata che si dovrebbe trovare sulla cella corrente. Se non è una data visualizza un messaggio di avvertimento ed esce dalla SubRoutine.

3. Azzera i vettori dei Punti, delle Giocate, Vinte, Pareggiate, Perse, RetiFatte e RetiSubite.

La seconda parte della Macro, invece: ( figura 17)

1. Imposta la variabile Riga sulla riga successiva

2. Controlla se la riga corrente è la prima, in questo caso avvisa ed esce

3. 'Cicla' (Scorre) le 10 righe successive dove si trovano i risultati della giornata.

Se la colonna è la seconda (la 'B') allora legge i risultati dell'andata (a sinistra delle caselle combinate con i nomi delle squadre), identifica l'ID della squadra ospitante (colonna 3 o 'C') e quello della squadra ospitata (colonna 4 o 'D') e poi cede il controllo alla Routine di nome 'AggiornaAndata' che incrementa tutti i vettori interessati.

Se la colonna è la 'F' allora legge i risultati del ritorno (a destra delle caselle combinate con i nomi delle squadre), identifica gli ID come sopra e cede il controllo alla Routine di nome 'AggiornaRitorno'.

Da notare che gli ID altro non sono che i numeri da 1 a 20 memorizzati nella cella che sta dietro ad ogni casella combinata e che identificano di quale squadra si tratti.

Tutti i vettori sono di ampiezza 20, quindi tramite l'ID relativo si va ad attribuire i dati alla squadra giusta.

L'ultima parte della Macro lancia un'altra Sub di Nome AggiornaClassifica, la quale a sua volta non fa altro che riportare i dati dei vettori sul foglio 'Squadre', dopo averli sommati, squadra per squadra (riga per riga) ai valori precedenti.

La Sub AggiornaClassifica fa anche un'altra cosa importante: seleziona tutte le colonne del foglio 'Squadre' (compresa la colonna delle Penalizzazioni), quindi ricopia tutti i dati sul foglio 'Classifica', a questo punto sottrate i punti di penalizzazione dai punti effettivi e infine riordina tutte le righe in base alla colonna dei Punti ricalcolati.

La data dell'ultima giornata aggiornata viene ricopiata nella cella A1 sia del foglio 'Squadre' che del foglio 'Classifica'.

Per scaricare il codice VBA sequite le istruzioni contenute nel riquadro qui sotto.



Avvertenza !

Il file zip dell'esempio Campionato di Calcio con Excel (versione 2013-2014) contenente il progetto completo incluso il codice vba in chiaro di cui si è discusso in questo tutorial, è disponibile nell'area 'Videotutorial Download' riservata agli iscritti ai nostri corsi on line.

Nella colonna di destra puoi vedere una anteprima della 'Videotutorial Download area' e quanti e quali altri progetti Access, Excel, VBA sono disponibili.

Acquista anche uno solo dei nostri corsi per avere immediatamente accesso alla 'Videotutorial Download Area': è facile, basta un clic:

http://www.mc2.it






I Tutorial di Microsoft Excel


Home page MC2 E-Learning



Dr.Maurizio Cucchiara

Amministratore unico
MC2 E-Learning S.a r.l.
Formazione per il Web
autore del corso:
"Excel Corso Base"
disponibile on line su questo sito
http://www.mc2.it/html/excel.html

Condividi sui social network:

Social buttons



Iscriviti al nostro
nuovissimo
canale Youtube!


Iscrivi al nostro canale Youtube



Potrai restare aggiornato
sui nostri più recenti
video-tutorial su:
Microsoft Access ed Excel
e molto altro...



Cerca sul web con Google:




Guarda il video-tutorial
sul nostro canale Youtube:


Campionato di Calcio con Excel 2010

NOVITA'!

'VIDEO TUTORIAL
DOWNLOAD AREA'

(Fai clic sull'immagine
qui sotto per vedere
una anteprima della
pagina di accesso)



L'accesso è riservato agli iscritti ai corsi on line www.mc2.it

Acquista anche uno solo
dei nostri corsi
per avere immediatamente
accesso alla
'Videotutorial Download Area': è facile, basta un clic:

http://www.mc2.it



Iscriviti alla newsletter: E' GRATIS! (?)

 Nome: (?)

 (?)

e-mail: (?)

 (?)

Newsletter:

formato preferito:

Microsoft Access (?)

Impariamo Excel e il VBA(?)

Internet "da zero"! (?)

Html (?)

Consiglio

(?) = Aiuto

Leggi qui la Informativa completa sulla privacy.