funcţii excel definite de utilizator (fdu) în vba
DESCRIPTION
Funcţii Excel definite de utilizator (FDU) în VBA. Funcţiile definite de utilizator ( UDF – User Defined Function) în Excel reprezintă o alternativă personalizată la funcţiile proprii . - PowerPoint PPT PresentationTRANSCRIPT
Funcţii Excel definite de utilizator (FDU) în VBA
Funcţiile definite de utilizator (UDFUDF – User Defined Function) în Excel reprezintă o alternativă personalizată la funcţiile proprii.
FDUFDU pot reduce substanţial încărcarea unei foi de calcul. Prin FDU este posibil a se reduce un calcul care necesită numeroase celule pentru rezultate intermediare, la un singur apel de funcţie, efectuat dintr-o singură celulă.
FDUFDU pot creşte productivitatea în momentul în care mai mulţi utilizatori trebuie să repete aceleaşi proceduri de calcul. Astfel, se poate defini o bibliotecă de funcţii adaptate utilizării într-un mediu personalizat.
FDU: Creare FDU nu pot fi înregistrate ca operaţii manuale (Tools – Macro – Record New Macro)
FDUFDU trebuiesc editate (de la zero), utilizând un modul VBE (Tools – Macro – Visual Basic Editor / Alt+F11).
Dacă este necesar (dacă nu există în fereastra VBA Project nici un modul predefinit), se poate insera prin comanda Insert Module
Principala diferenţă între o procedură VBA de tip sub şi o procedură de tip funcţie, rezidă în faptul că o FDU returnează o valoare.
Astfel , numeFDU() calculează o valoare numerică plecând de la variabilele sale declarate ca argumente şi transpune acea valoare într-o celulă în care este editată formula Excel care face apel la funcţia “numeFDU”.
Funcţii Definite de Utilizator (funcţii personalizate)
Funcţiile personalizate Funcţiile personalizate vor fi editate utilizând un modul VBA (Tools – Macro – Visual Basic Editor / Alt+F11Alt+F11).
Inserarea unui modul predefinitmodul predefinit în fereastra VBA Project se realizează prin comandaprin comanda Insert Insert ModuleModule
Close and Return to Excel / Alt+F11
În Excel, funcţia se editează în mod obişnuit, cu argumentele proprii adrese de celule / nume de câmpuri în loc de variabile.
FDU: Exemple: Exemplul 1
Structură If...Then...Else...EndIf
Exemplul 2
Structură If ... ElseIf...EndIf
Exemplul 3
Structură Select Case ... End Select
Exemplul 4
Structură If cu Vlookup
If...Then...Else...EndIf
If...ElseIf...EndIf
180 zile
Nr. zile întârziere
>180 zile
90 zile
0,3% 0,5% 0,7% 1%
0,5%
30 zile
0,3%
If...ElseIf...EndIf
=IF(OR(J5="DA";TODAY()<H5);0; IF((TODAY()-H5)<=30;(TODAY()-H5)*I5*0,3%; IF((TODAY()-H5)<=90;(I5*30*0,3%)+(TODAY()-H5-30)*I5*0,5%; IF((TODAY()-H5)<=180;(I5*30*0,3%)+(I5*60*0,5%)+(TODAY()-H5-90)*I5*0,7%; (I5*30*0,3%)+(I5*60*0,5%)+(I5*90*0,7%)+(TODAY()-H5-180)*I5*1%))))
Select Case...End Select
Obiecte VBA de tip funcţii (funcţia VlookupVlookup)
IF (Cantitate>Cantitate_discount;Dif_cant*Preţ*(1-Reducere)+Cantitate_discount*Preţ;
Cantitate*Preţ)
Modul VBA cu funcţia Vlookup
Modul VBA cu funcţia Vlookup (Test de existenţă a cheii de consultare)
Modul VBA cu funcţia Vlookup
FDU: Limite în utilizareFDU: Limite în utilizare Imposibilitatea de creare a unei funcţii capabile să modifice (sau să se refere la) structura unei foi de calcul.
O FDUFDU nu poate să returneze o valoare pentru o altă celulă, nu poate modifica o caracteristică fizică a unei celule (font, culoare) .
O FDUFDU nu poate îndeplini acţiuni cum ar fi copierea sau deplasarea conţinutului celulelor, modificarea poziţiei cursorului, etc.
O FDUFDU poate apela o altă procedură de tip funcţie (FunctionFunction) sau subrutină (SubSub), dar se supune aceloraşi restricţii structurale. Funcţiile sau procedurile care nu sunt legate de celulele foii de calcul pot executa orice acţiune Excel, numai dacă nu sunt integrate în FDU
Utilizând numeroase FDU, timpul de recalcul pentru formulele existente scade.