Excel: creazione di UDF da una formula


0

Spesso mi imbatto in situazioni in cui sto scrivendo formule molto simili ma prolisse che usano lo stesso intervallo di un argomento per più funzioni.

Come un semplice esempio, considera:

=(A+B)/B

C'è un modo semplice per creare un UDF come:

=PCTCHANGE(A,B)

Questo potrebbe eseguire esattamente lo stesso calcolo di cui sopra? Mi rendo conto che con semplici operatori aritmetici questo è banale, ma esiste un modo semplice per avvolgere qualcosa di più complesso in una singola funzione facile?

=IF(""=$U30,"",G30/IF(ROW(G30)-MONTH(U30)<ROW(K$8),G$5,OFFSET(G30,-MONTH(U30),0))-1)

Mi piacerebbe evitare di tradurre la formula in chiamate Application.WorksheetFunction. Presumo che Application.Evaluate sia probabilmente parte della soluzione, ma non riesco a capire come passare gli intervalli in esso attraverso l'UDF.


Sarebbe molto utile vedere l'UDF che hai già provato o con cui stai lavorando.
CharlieRB

Potresti modificare la tua seconda formula per mostrare riferimenti assoluti / relativi completi? G30 potrebbe essere $ G30 come $ U30? K $ 8 e G $ 5 potrebbero essere $ K $ 8 e $ G $ 5? La mancanza di riferimenti assoluti alle colonne mi preoccupa che la formula non funzioni se non in una colonna specifica.
Jeeped

Risposte:


1

Sarà necessario aprire VBA e creare una UDF da un modulo.

Digita ALT-F11 per aprire l'editor VBA. Sotto il tuo progetto, fai un clic destro e seleziona Inserisci - & gt; Modulo

Digitare quanto segue nella finestra dell'editor VBA

Function PctChange(A As Double, B As Double) As Double
   PctChange = (A + B) / B
End Function

Quando chiami la funzione, fai ciò che fai normalmente. In qualsiasi tipo di cella PctChange (CellA, Cell B).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.