Sommario
Oggi continueremo a esplorare le funzioni personalizzate di Excel. Poiché sapete già come creare le UDF (e, spero, avete anche provato ad applicarle in Excel), andiamo un po' più a fondo e impariamo a utilizzare e memorizzare le funzioni definite dall'utente in Excel.
Inoltre, vi mostreremo come salvare facilmente le funzioni in un file aggiuntivo di Excel per utilizzarle in seguito con pochi clic.
Ecco di cosa parleremo:
Diversi modi di utilizzare le UDF in Excel
Utilizzo delle UDF nei fogli di lavoro
Una volta verificato il corretto funzionamento delle UDF, è possibile utilizzarle nelle formule di Excel o nel codice VBA.
È possibile applicare le funzioni personalizzate in una cartella di lavoro di Excel nello stesso modo in cui si utilizzano le funzioni normali. Ad esempio, è sufficiente scrivere in una cella la formula seguente:
= GetMaxBetween(A1:A6,10,50)
Le UDF possono essere utilizzate in combinazione con le funzioni regolari, ad esempio per aggiungere del testo al valore massimo calcolato:
= CONCATENATE("Il valore massimo tra 10 e 50 è ", GetMaxBetween(A1: A6,10,50))
Il risultato è visibile nella schermata seguente:
È possibile trovare il numero che è sia massimo che compreso nell'intervallo da 10 a 50.
Verifichiamo un'altra formula:
= INDICE(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), l'indice
La funzione personalizzata GetMaxBetween controlla l'intervallo B2:B9 e trova il numero massimo compreso tra 10 e 50. Quindi, utilizzando INDEX + MATCH, si ottiene il nome del prodotto che corrisponde a questo valore massimo:
Come si può vedere, l'uso delle funzioni personalizzate non è molto diverso da quello delle normali funzioni di Excel.
A questo proposito, ricordate che una funzione definita dall'utente può solo restituire un valore, ma non può eseguire altre azioni. Per saperne di più sulle limitazioni delle funzioni definite dall'utente.
Utilizzo di UDF in procedure e funzioni VBA
Le UDF possono essere utilizzate anche nelle macro VBA. Di seguito è riportato il codice della macro che cerca il valore massimo nell'intervallo da 10 a 50 nella colonna contenente la cella attiva.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubIl codice della macro contiene la funzione personalizzata
GetMaxBetween(.Cells, 10, 50)
Trova il valore massimo nella colonna attiva e lo evidenzia. Il risultato della macro è visibile nella schermata seguente.
Una funzione personalizzata può essere utilizzata anche all'interno di un'altra funzione personalizzata. In precedenza, nel nostro blog, abbiamo analizzato il problema della conversione di un numero in testo utilizzando la funzione personalizzata denominata Numero dell'incantesimo .
Con il suo aiuto, possiamo ottenere il valore massimo dall'intervallo e scriverlo immediatamente come testo.
Per farlo, creeremo una nuova funzione personalizzata in cui utilizzeremo le funzioni GetMaxBetween e Numero dell'incantesimo che ci sono già familiari.
Funzione SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) Fine FunzioneCome si può notare, il GetMaxBetween è un argomento di un'altra funzione personalizzata, Numero dell'incantesimo Definisce il valore massimo, come abbiamo fatto molte volte in precedenza. Questo numero viene poi convertito in testo.
Nell'immagine qui sopra, si può vedere come l'opzione IncantesimoGetMaxBetween trova il numero massimo tra 100 e 500 e lo converte in testo.
Richiamo di UDF da altre cartelle di lavoro
Se avete creato una UDF nella vostra cartella di lavoro, questo purtroppo non significa che non dovrete affrontare alcun problema.
Nella mia esperienza, la maggior parte degli utenti prima o poi crea la propria collezione personale di macro e funzioni personalizzate per automatizzare processi e calcoli individuali. E qui sorge il problema: il codice delle funzioni definite dall'utente in Visual Basic deve essere memorizzato da qualche parte per poter essere utilizzato in seguito nel lavoro.
Per applicare la funzione personalizzata, la cartella di lavoro in cui è stata salvata deve essere aperta in Excel. In caso contrario, quando si tenta di utilizzarla si otterrà l'errore #NOME! Questo errore indica che Excel non conosce il nome della funzione che si desidera utilizzare nella formula.
Vediamo i modi in cui è possibile utilizzare le funzioni personalizzate create.
Metodo 1. Aggiungere il nome della cartella di lavoro alla funzione
Prima del nome della funzione, è possibile specificare il nome della cartella di lavoro in cui si trova. GetMaxBetween() in una cartella di lavoro denominata Le mie_funzioni.xlsm è necessario inserire la seguente formula:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metodo 2. Memorizzare tutte le UDF in un file comune
Salvare tutte le funzioni personalizzate in una cartella di lavoro speciale (ad esempio, Le mie_funzioni.xlsm ) e copiare la funzione desiderata nella cartella di lavoro corrente, se necessario.
Ogni volta che si crea una nuova funzione personalizzata, è necessario duplicare il suo codice nella cartella di lavoro in cui verrà utilizzata. Con questo metodo, possono verificarsi diversi inconvenienti:
- Se ci sono molti file di lavoro e la funzione è necessaria ovunque, il codice dovrà essere copiato in ogni libro.
- Ricordate di salvare la cartella di lavoro in un formato abilitato alle macro (.xlsm o .xlsb).
- Quando si apre un file di questo tipo, la protezione contro le macro visualizza ogni volta un avviso che deve essere confermato. Molti utenti si spaventano quando vedono l'avviso di una barra gialla che chiede loro di abilitare le macro. Per evitare di vedere questo messaggio, è necessario disabilitare completamente la protezione di Excel. Tuttavia, questo potrebbe non essere sempre corretto e sicuro.
Penso che sarete d'accordo con me sul fatto che aprire sempre un file e copiare il codice delle funzioni definite dall'utente o scrivere il nome di questo file in una formula non è la soluzione migliore.
Metodo 3. Creare un file aggiuntivo di Excel
Credo che il modo migliore sia quello di memorizzare le funzioni personalizzate utilizzate di frequente in un file aggiuntivo di Excel. Vantaggi dell'utilizzo del componente aggiuntivo:
- È necessario collegare il componente aggiuntivo a Excel solo una volta, dopodiché è possibile utilizzare le sue procedure e funzioni in qualsiasi file del computer. Non è necessario salvare le cartelle di lavoro nei formati .xlsm e .xlsb, poiché il codice sorgente non verrà memorizzato in tali file, ma nel file del componente aggiuntivo.
- Non sarete più infastiditi dalla protezione delle macro, poiché i componenti aggiuntivi fanno sempre riferimento a fonti affidabili.
- Un componente aggiuntivo è un file separato, facile da trasferire da un computer all'altro e da condividere con i colleghi.
Parleremo più avanti della creazione e dell'uso di un componente aggiuntivo.
Utilizzo dei componenti aggiuntivi per memorizzare funzioni personalizzate
Come si crea il proprio componente aggiuntivo? Esaminiamo questo processo passo per passo.
Passo 1. Creare il file aggiuntivo
Aprite Microsoft Excel, create una nuova cartella di lavoro e salvatela con un nome adatto (ad esempio, My_Functions) in formato add-in. Per farlo, utilizzate il menu File - Salva con nome o il tasto F12. Assicurarsi di specificare il tipo di file Add-in di Excel :
Il componente aggiuntivo avrà l'estensione .xlam.
Suggerimento: si noti che per impostazione predefinita Excel memorizza i componenti aggiuntivi nella cartella C:\Users\[Nome_Utente]\AppData\Roaming\Microsoft\AddIns Si consiglia di accettare la posizione predefinita. Se si desidera, è possibile specificare un'altra cartella, ma poi, quando si collega il componente aggiuntivo, sarà necessario trovare e specificare manualmente la sua nuova posizione. Se si salva nella cartella predefinita, non è necessario cercare il componente aggiuntivo sul computer: Excel lo elencherà automaticamente.
Passo 2. Collegare il file aggiuntivo
Ora il componente aggiuntivo creato deve essere collegato a Excel, in modo che venga caricato automaticamente all'avvio del programma. Per farlo, utilizzate il menu File - Opzioni - Componenti aggiuntivi Assicurarsi che Componenti aggiuntivi di Excel è selezionato nel menu Gestire Fare clic sul campo Vai Nella finestra visualizzata, contrassegnare il nostro componente aggiuntivo My_Functions. Se non viene visualizzato nell'elenco, fare clic sul pulsante Sfogliare e sfogliare il percorso del file aggiuntivo.
Se si utilizza un componente aggiuntivo per memorizzare funzioni personalizzate, è necessario seguire una semplice regola: se si trasferisce la cartella di lavoro a un'altra persona, assicurarsi di trasferire anche una copia del componente aggiuntivo che contiene la funzionalità desiderata, che dovrà essere collegata nello stesso modo in cui è stata collegata ora.
Passo 3. Aggiungere funzioni e macro personalizzate al componente aggiuntivo
Il nostro componente aggiuntivo è collegato a Excel, ma non ha ancora alcuna funzionalità. Per aggiungervi nuove UDF, aprite l'Editor di Visual Basic premendo Alt + F11 . Quindi potete aggiungere nuovi moduli con codice VBA come descritto nella mia esercitazione Creare UDF.
Selezionare il file del componente aggiuntivo ( Le mie_finzioni.xlam ) nella finestra VBAProject. Utilizzare il comando Inserto - Modulo per aggiungere un modulo personalizzato. È necessario scrivere funzioni personalizzate in esso.
È possibile digitare manualmente il codice di una funzione definita dall'utente o copiarlo da qualche parte.
È tutto. Ora avete creato il vostro componente aggiuntivo, lo avete aggiunto a Excel e potete utilizzare le UDF in esso. Se volete utilizzare altre UDF, scrivete il codice nel modulo del componente aggiuntivo nell'editor VBA e salvatelo.
Per oggi è tutto. Abbiamo imparato come utilizzare le funzioni definite dall'utente nella cartella di lavoro. Speriamo che queste linee guida vi siano utili. Se avete domande, scrivete nei commenti a questo articolo.