Elio Buonocore e le Formule Matriciali  - terza parte                           email :  elibuono@tin.it

Formule matriciali di matrici restituite da Funzioni Definite dall’Utente.

La terza parte del corso sulle matriciali la definisco come "Excel avanzato". Entriamo infatti nel mondo delle Funzioni "fai da te", cioè delle Funzioni Utente (viste già in procedure vba) ma realizzate usando Funzioni Matriciali. E' un mondo che non conoscevo, ma dove Elio dimostra preparazione e competenza, e sono lieto che abbia deciso di rendere fruibili, con esempi e spiegazioni, nuove possibilità di lavorare sui fogli di lavoro.

Anche per questa terza parte è disponibile un file xls. con gli esempi, accompagnato da un file .doc con relative spiegazioni. Sotto uno stralcio iniziale delle sue spiegazioni, che troverete comunque nel file zip da scaricare:

Utilizzo in formule matriciali di matrici restituite da Funzioni Definite dall’Utente

L’esempio proposto è una funzione VBA creata dallo scrivente che restituisce un array di date relative a un mese sotto forma di una matrice bidimensionale 7x6 per ottenere l’effetto grafico di un calendario mensile con una settimana per ogni riga, lasciando vuoti gli elementi della matrice corrispondenti allo ‘spezzone’ di settimana iniziata con il finire del mese precedente
Il codice della funzione Function CalendarioMeseMatrice2D(Optional MiaData As Date) As Date()
è nel modulo1 del file. L’argomento passato alla funzione è una data, che se omesso, esita nella restituzione del calendario del mese corrente, altrimenti restituisce il mese appartenente alla data passata. Per quanto la funzione possa essere utilizzata in qualsiasi intervallo di un foglio di lavoro, per ottenere l’effetto grafico finale bisogna preparare una formattazione coerente al risultato ricercato. Nell’esempio
<Foglio di lavoro Funzioni Def Utente Matrice>
l’argomento viene passato per riferimento di cella ( ma potrebbe essere passato come valore in qualsiasi formato valido): cella D2. Dopo aver selezionato le celle C6:I11 inserire la formula matriciale:
{=CalendarioMeseMatrice2D(D2)}
Si otterranno le date secondo la disposizione voluta.
Nel modulo2 del file ho inserito un’altra Function ( GiornoNonLavorativo) da me elaborata ( tranne che nella parte che fa riferimento alla funzione Easter per il calcolo del Lunedì di Pasqua, reperita sul WEB )che restituisce vero o falso rispettivamente nel caso la data passata alla Function sia, in Italia, un giorno lavorativo oppure no. È una funzione che avevo già preparato per dei planner di lavoro mensili e che, pertanto, gestisce anche l’opzione sabato lavorativo o meno, e l’eventuale inserimento della data di festa patronale. Questi ultimi 2 sono entrambi argomenti facoltativi.
Operando una formattazione condizionale nell’area del calendario che sfrutta questa formula si ha la formattazione in rosso dei festivi. Per evitare la presenza di zero nelle celle senza riferimento a giorni del calendario ho premesso alla formattazione condizionale precedente quella che punta a valore zero per impostare il carattere bianco che si confonde al motivo della cella pure bianco.
In una variante (celle K6:Q11) la formula principale è nidificata in una funzione SE per evitare l’inserimento degli zero; in questo ultimo caso l’unico criterio per la formattazione condizionale è la funzione GiornoNonLavorativo.

segue..................(leggere il file .doc)

Gli argomenti continuano con la quarta parte, dove Elio propone l'utilizzo di matriciali per un programma di gestione Campionato di Calcio.

File consultabile e scaricabile (2 files)

nome file dimensione
FunzionematricialeUtente-Matricidicostanti.zip 20  Kb