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)
|