funcţii excel definite de utilizator (fdu) în vba

13
Funcţii Excel definite de utilizator (FDU) în VBA Funcţiile definite de utilizator ( UDF UDF – User Defined Function) în Excel reprezintă o alternativă personalizată la funcţiile proprii. FDU FDU 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ă. FDU FDU 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.

Upload: cira

Post on 19-Mar-2016

56 views

Category:

Documents


4 download

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 Presentation

TRANSCRIPT

Page 1: Funcţii Excel definite de utilizator (FDU) în VBA

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.

Page 2: Funcţii Excel definite de utilizator (FDU) în VBA

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”.

Page 3: Funcţii Excel definite de utilizator (FDU) în VBA

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.

Page 4: Funcţii Excel definite de utilizator (FDU) în VBA

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

Page 5: Funcţii Excel definite de utilizator (FDU) în VBA

If...Then...Else...EndIf

Page 6: Funcţii Excel definite de utilizator (FDU) în VBA

If...ElseIf...EndIf

Page 7: Funcţii Excel definite de utilizator (FDU) în VBA

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

Page 8: Funcţii Excel definite de utilizator (FDU) în VBA

Select Case...End Select

Page 9: Funcţii Excel definite de utilizator (FDU) în VBA

Obiecte VBA de tip funcţii (funcţia VlookupVlookup)

IF (Cantitate>Cantitate_discount;Dif_cant*Preţ*(1-Reducere)+Cantitate_discount*Preţ;

Cantitate*Preţ)

Page 10: Funcţii Excel definite de utilizator (FDU) în VBA

Modul VBA cu funcţia Vlookup

Page 11: Funcţii Excel definite de utilizator (FDU) în VBA

Modul VBA cu funcţia Vlookup (Test de existenţă a cheii de consultare)

Page 12: Funcţii Excel definite de utilizator (FDU) în VBA

Modul VBA cu funcţia Vlookup

Page 13: Funcţii Excel definite de utilizator (FDU) în VBA

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.