wikiHow è una "wiki"; questo significa che molti dei nostri articoli sono il risultato della collaborazione di più autori. Per creare questo articolo, autori volontari hanno collaborato apportando nel tempo delle modifiche per migliorarlo.
Questo articolo è stato visualizzato 31 176 volte
Excel ha molte formule precaricate, forse centinaia, tipo SUM, VLOOKUP, LEFT e via dicendo. Quando però inizi a usare Excel per svolgere compiti più complessi, spesso ti accorgerai di avere bisogno di una funzione che non esiste tra quelle predefinite. Non ti preoccupare, non tutto è perduto, quello che ti serve è creare una funzione personalizzata.
Passaggi
-
1Crea una nuova cartella di lavoro oppure apri la cartella di lavoro in cui vuoi usare formula personalizzata appena creata.
-
2Apri l'editor di Visual Basic già incluso in Microsoft Excel cliccando su Strumenti-->Macro--> Visual basic editor (o premi alt+f11).
-
3Aggiungi un nuovo modulo alla cartella di lavoro cliccando sul bottone indicato nella figura. Puoi anche creare una formula direttamente nel foglio di lavoro senza aggiungere un nuovo modulo. Tuttavia in questo modo non ti sarà possibile usare la funzione in altri fogli della stessa cartella di lavoro.
-
4Crea un "header" o "prototipo" della funzione. Deve avere la struttura seguente: public function "Il nome della tua funzione" (parametro1 As tipo1, parametro2 As tipo2 ) As return TipoLa funzione può avere tutti i parametri che preferisci. Possono essere uno qualunque dei tipi di dati accettati da Excel, o anche oggetti come Range. Puoi pensare ai parametri come agli operandi sui quali la tua funzione lavorerà. Ad esempio se scrivi SIN(45) per calcolare il seno di un angolo di 45°, 45° sarà considerato un parametro. In seguito il codice della tua funzione utilizzerà questo valore per calcolare qualcos'altro e visualizzerà il risultato.
-
5Aggiungi il codice della funzione assicurandoti che: 1) usi i valori indicati dai parametri 2) assegni il risultato al nome della funzione; e 3) chiudi la funzione con "end function". Per imparare a programmare in VBA può servire del tempo e qualche tutorial dettagliato. Tuttavia le funzioni di solito hanno blocchi di codice non molto grandi e utilizzano solo alcune delle caratteristiche del linguaggio. Gli elementi più utili del linguaggio VBA sono:
- I blocchi If, che ti permettono di eseguire una parte del codice solo se una condizione è soddisfatta. Ad esempio:
Public Function Course Result(grade As Integer) As String
If grade >= 5 Then
CourseResult = "Approved"
Else
CourseResult = "Rejected"
End If
End Function
Nota che gli elementi di un blocco di codice If sono:IF condizione THEN codice ELSE codice END IF
. La parola chiave Else che vedi nella seconda parte del codice è opzionale. - Il blocco di codice Do, che esegue una parte del codice While, cioè mentre, o Until, cioè finché, una condizione è soddisfatta. Ad esempio:
Public Function IsPrime(value As Integer) As Boolean
Dim i As Integer
i = 2
IsPrime = True
Do
If value / i = Int(value / i) Then
IsPrime = False
End If
i = i + 1
Loop While i < value And IsPrime = True
End Function
Nota di nuovo i seguenti elementi:DO codice LOOP WHILE/UNTIL condizione
. Nota anche la seconda riga di codice in cui la variabile è "dichiarata". Puoi aggiungere variabili al tuo codice in modo da poterle usare in seguito. Le variabili funzionano come valori temporanei inseriti all'interno del codice. Infine, nota la dichiarazione della funzione come BOOLEAN (booleana), che è un tipo di dati che autorizza solo i valori TRUE/FALSE (vero/falso). Questo metodo per determinare se un numero è primo non è certo uno dei migliori, ma l'ho lasciato così per rendere il codice più facile da leggere. -
Il blocco "for",, che esegue una parte di codice un numero di volte specificato. Ad esempio:
Public Function Factorial(value As Integer) As Long
Dim result As Long
Dim i As Integer
If value = 0 Then
result = 1
ElseIf value = 1 Then
result = 1
Else
result = 1
For i = 1 To value
result = result * i
Next
End If
Factorial = result
End Function
Nota di nuovo gli elementi:FOR variabile = limite inferiore TO limite superiore codice NEXT
.Nota anche l'elemento ElseIf nell'istruzione If che ti permette al codice di far eseguire un numero maggiore di funzioni. Infine, nota la dichiarazione della funzione e della variabile "result" come Long. Il tipo di dati Long permette di usare valori di dati più ampi di Integer.
Qui sotto è mostrato il codice di una funzione che converte piccoli numeri in parole.
- I blocchi If, che ti permettono di eseguire una parte del codice solo se una condizione è soddisfatta. Ad esempio:
-
6Torna indietro al tuo foglio di lavoro e utilizza la funzione facendo iniziare il contenuto di una cella con il simbolo di uguale seguito dal nome della funzione. Apri una parentesi e aggiungi il nome della funzione, i parametri separati da virgole e una parentesi di chiusura finale. Ad esempio:=NumeroALettera(A4)
Puoi anche utilizzare la tua formula personalizzata cercandola nella categoria Definite dall'utente nella procedura guidata Inserisci Formula. Basta cliccare sul bottone 'Fx' che si trova a sinistra della barra delle formule.I parametri possono essere di tre tipi:- Costanti digitate direttamente nella cella formula. In questo caso le stringhe devono essere messe tra virgolette.
- Riferimenti alle celle tipo B6 o intervallo tra i riferimenti di cella tipo A1:C3 (i parametri devono essere del tipo di dati Range).
- Altre funzioni annidate all'interno della tua funzione (la tua funzione può anche essere annidata all'interno di altre funzioni). Esempio: =Factorial(MAX(D6:D8))
-
7Verifica che il risultato è corretto dopo aver usato la funzione diverse volte, per essere sicuro che sia capace di gestire correttamente diversi parametri di valore.Pubblicità
Consigli
- Ogni volta che scrivi un blocco di codice dentro una struttura di controllo come If, For, Do, etc. assicurati di indentare il blocco di codice usando la barra spaziatrice o il tasto tab (lo stile dell'indentazione è a tua scelta). Questo renderà il codice facile da capire e sarà più facile individuare gli errori e apportare miglioramenti.
- Utilizza un nome che non è stato già impiegato da una delle funzioni standard di Excel altrimenti alla fine potrai usare solo una delle due funzioni.
- Excel include molte funzioni predefinite e puoi fare molti calcoli usandole da sole o in combinazione tra loro. Assicurati di scorrere la lista delle funzioni predefinite prima di scriverne una nuova. L'esecuzione potrebbe essere più veloce se usi una delle funzioni precaricate.
- A volte una funzione potrebbe non richiedere tutti i parametri per calcolare un risultato. In questo caso puoi usare la parola chiave Optional prima del nome del parametro nell'intestazione della funzione. Puoi anche usare la funzione IsMissing(nome_del_parametro) inserito nel codice per determinare se il parametro è assegnato a un valore oppure no.
- Se non sai come scrivere il codice per una funzione leggi How to write a Simple Macro in Excel.
Avvertenze
- A causa di temporanee misure di sicurezza alcuni utenti potrebbero avere disabilitato le macro. Assicurati che i tuoi colleghi siano al corrente che la cartella che stai loro inviando contenga delle macro e che possono essere sicuri di non danneggiare i loro computer.
- Le funzioni utilizzate in questo articolo non sono, in alcun modo, il modo migliore per risolvere i problemi loro collegati. Sono state usate solo per spiegare l'uso delle strutture di controllo del linguaggio.
- VBA, come ogni altro linguaggio, ha molte altre strutture di controllo oltre a Do, If e For. Queste sono state qui spiegate solo per chiarire il tipo di operazioni che possono essere fatte all'interno del codice sorgente di una funzione. Sono disponibili on-line molti altri tutorial dove puoi imparare VBA.