2.3. paranteze rotunde; pentru a controla ordinea operatiilor, veti avea nevoie de
paranteze; nu folosim decat paranteze ( ); puteti deschide oricat de multe paranteze, cu
conditia sa le si inchideti la un moment dat
Procesorul de tabele Excel include un numar mare de functii predefinite (232), dar ofera si
posibilitatea ca utilizatorul sa-si defineasca propriile functii, potrivit cerintelor de exploatare
a aplicatiilor.
Functiile Excel permit efectuarea de calcule si prelucrari diverse, de la cele mai simple pana
la cele mai complexe.
Functii predefinite
Functiile predefinite reprezinta formule speciale care respectand o anume sintaxa, executa
operatii si prelucrari specifice, fiind destinate rezolvarii unor probleme si aplicatii ce contin
elemente predefinite de calcul.
Nici un spatiu nu este admis ca separator intre cele trei componente ale functiilor
predefinite. Argumentele se afla inchise intre paranteze rotunde si sunt separate printr-un
separator zecimal. Acest separator poate fi virgula sau punct si virgula, dupa cum a fost
configurat initial sistemul. In exemplele luate, se va lua in consideratie ca separator zecimal
caracterul "punct si virgula".
Exista si functii care nu au nevoie de precizarea argumentului, de exemplu:=NOW(),
=TRUE(), =TODAY(), etc.
Exemplul urmator ilustreaza diferite argumente care se pot intalni la o functie predefinita:
- un text: orice secventa de caractere inclusa intre ghilimele, adresa sau un nume de camp
ce contine o eticheta tip sir de caractere sau o formula sau functie care returneaza o
eticheta. Un sir de caractere folosit intr-o functie trebuie pus intre ghilimele pentru a nu fi
confundat cu un nume de camp.
- o valoare: un numar, adresa sau numele unei celule care contine un numar, o formula
sau functie predefinita care returneaza un numar.
Toate tipurile de argumente pot fi folosite impreuna intr-o functie atunci cand sintaxa este
respectata.
O functie predefinita se poate introduce intr-o celula tastand-o ca atare (conform sintaxei)
sau prin intermediul generatorului de functii.
Cea mai simpla metoda o reprezinta introducerea nemijlocita a functiilor predefinite,
corespunzator sintaxei, in celula unde se va opera calculul respectiv (metoda recomandata).
In cel de-al doilea caz, se activeaza selectorul functiilor predefinite aflat pe bara de editare
sau se activeaza comanda Insert Function (figura ). Apoi, se alege functia respectiva, din
caseta de dialog Paste Function, se valideaza si se completeaza sintaxa generata automat.
1. functii matematice si trigonometrice (Math & Trig): permit efectuarea de calcule
matematice simple si complexe;
2. functii statistice (Statistical): permit efectuarea unor calcule statistice utilizand serii
de valori;
3. functii de informare (Information): afiseaza informatii despre celule si campuri;
4. functii logice (Logical): determina valoarea de adevar sau de fals - corespunzator
unei conditii;
5. functii baza de data (Database): efectueaza diferite calcule asupra unor rubrici, intr-
o baza de date, corespunzator unor criterii definite;
6. functii de cautare si consultare (Lookup & Reference): permit localizarea continutului
unei celule;
7. functii calendar sau data calendaristica (Date & Time): manipuleaza numere care
reprezinta date calendaristice sau timp;
8. functii text sau sir de caractere (Text): ofera informatii legate de textul existent in
celule si permit operatii cu etichete;
9. functii financiare (Financial): permit realizarea de calcule economico-financiare
predefinite.
In continuare, prezentam cele mai importante functii predefinite, precizand ca cea mai mare
a parte a lor sunt perfect compatibile ca sintaxa si ca semnificatie cu functiile arond
aferente procesorului de tabele LOTUS 1-2-3.
FUNCTIILE MATEMATICE SI TRIGONOMETRICE
Functiile matematice si trigonometrice (Math & Trig) permit efectuarea diferitelor calcule, de
la cele mai simple la cele mai complexe, pentru rezolvarea de aplicatii ce solicita
instrumente matematice si trigonometrice de uz curent.
Functia SUM
=SUM(lista) aduna valorile dintr-o lista precizata ca argument.
Lista poate contine capuri continue sau discontinue referite prin adrese (coordonate) sau
prin nume de camp(uri).
Functia de insumare este completata - spre usurinta utilizatorului - cu butonul Auto Sum
Functia generata de butonul respectiv insumeaza pe linie sau pe coloana valori adiacente
(valorile nu trebuie sa fie intrerupte in succesiunea lor de celule vide sau de celule care sa
contina texte). Auto-insumarea opereaza astfel pe linie sau pe coloana pana acolo unde se
intalneste primul semn de discontinuitate (figura).
Pot exista mai multe cazuri (exemplificate in figura):
- - se plaseaza cursorul acolo unde se doreste a se calcula suma (eventual selectand o
plaja de celule pe linie sau o coloana unde sa se depuna rezultatele
- se selecteaza plaja de celule de insumat, inclusiv zona unde se vor plasa rezultatele
insumarii (o linie mai jos si/sau o coloana mai la dreapta), dupa care se activeaza butonul
AutoSum prin dublu-click.
=PRODUCT (lista) multiplica valorile continute intr-o lista. =SUBTOTAL(referinta-
tip;camp de regrupat) calculeaza un rezultat ce provine dintr-o grupare a datelor operand
diferite operatii specifice (conform referintelor-tip) asupra unui camp de regrupat.
1 AVERAGE Medie
2 COUNT Numara
4 MAX Maximum
5 MIN Minimum
6 PRODUCT Produs
9 SUM Suma
Functia PRODUCT
In exemplul prezentat in figura se calculeaza suma (referinta-tip 9) valorilor produselor vandute pe 01-Iul-
98 (campul de regrupat este E31:E33).
=SUMPRODUCT(lista) multiplica valorile situate in celulele corespondente, aferente unor serii de
campuri, iar apoi aduna rezultatele obtinute. In exemplul prezentat in figura urmatoare se calculeaza prin
functia SUMPRODUCT valoarea totala a vanzarilor, adica suma dintre produsele cantitatilor (C31:C36) si
preturilor (D31:D36).
=SUMIF(camp de evaluat; criteriu; camp de insumat) aduna continutul celulelor potrivit unui criteriu
dat.
In exemplul din figura de mai jos se calculeaza prin functia SUMIF, suma
comisioanelor la vanzarile de produse (5% din valoare) pentru valorile vandute de peste 10.000.000 lei. In
acest caz campul de evaluat reprezinta valoarea (E31:E36), criteriul este de tip text si anume
“>10000000”, iar campul de insumat este comisionul (F31:F36).
=ROMAN(numar;format) converteste numerele din format cifric arab in text ce semnifica numere cu
format cifric roman. Formatul –cu valori de la 0 la 4- reprezinta gradul de concizie al numarului roman nou
generat. Numarul arab de transformat trebuie sa fie intreg. Un exemplu de astfel de transformare este
prezentat in figura de mai jos
=RAND() returneaza un numar aleator cuprins intre 0 si 1;
=ABS(numar) returneaza valoarea absoluta dintr-un numar;
=LN(numar) calculeaza logaritmul natural
Functia de rotunjire
=PI() returneaza valoarea numarului PI;
=INT(numar) afiseaza partea intreaga a argumentului (a numarului real), fara a-l rotunji.
FUNCTIILE STATISTICE
Functiile statistice (Statistical) permit efectuarea de calcule statistice utilizand serii de valori:
=MAX(lista) returneaza cea mai mare valoare din lista. Lista poate fi compusa din: numere, formule
numerice, adrese sau nume de campuri;
FUNCTILE DE INFORMARE
Functiile de informare (Information) afiseaza informatii referitoare la celule si campuri:
=ISBLANK(X) determina daca X sau amplasamentul definit de argumentul X este sau nu o celula vida.
Functia returneaza TRUE -valoarea logica de adevar- daca amplasamentul este o celula vida si FALSE –
valoarea logica de fals- in caz contrar;
=ISNUMBER(X) verifica daca X contine o valoare numerica. Functia returneaza TRUE – adevarat- daca
X contine un numar, altfel returneaza FALSE sau fals. Argumentul X poate fi o valoare, o adresa, text sau
o conditie);
=ISTEXT(X) verifica daca X contine un sir de caractere, returnand dupa caz TRUE sau FALSE.
=ISNONTEXT(X) verifica daca X nu contine un sir de caractere, returnand dupa caz TRUE sau FALSE.
=ISLOGICAL(X) verifica daca argumentul X contine o valoare de tip logic returnand dupa caz TRUE sau
FALSE.
=ISERROR(X) verifica daca argumentul X contine o valoare de tip eroare, returnand dupa caz TRUE sau
FALSE.
O parte din functiile de informare sunt exemplificate impreuna cu functiile logice.
FUNCTIILE LOGICE
Functiile logice (Logical) determina evaluarea unor expresii si in functie de acestea furnizeaza actiuni
sau rezultate complexe, generand valori de adevar sau de fals - corespunzator unor conditii (acestea pot
fi evaluate si inlantuite cu ajutorul operatorilor logici AND, OR, NOT).
=IF(conditie;X;Y) testeaza argumentul conditie si in functie de rezultatul evaluarii logice, genereaza
argumentul X daca conditia este adevarata sau argumentul Y daca aceasta este falsa.
Argumentele X sau Y pot fi valori, siruri de caractere (plasate intre ghilimele), nume de campuri sau
adrese de celule sau campuri care contin aceste valori. In locul argumentelor X sau Y se pot imbrica alte
structuri conditionale IF, generandu-se potrivit conditiilor ulterioare, X1,Y1 sau X2,Y2 si asa mai departe.
=NOT(evaluarea logica) inverseaza valoarea argumentului, returnand dupa caz TRUE sau FALSE;
Pentru exemplificarea functiei logice IF, furnizam urmatoarea aplicatie pentru calculul impozitului pe
salariile colaboratorilor angajati cu Conventie Civila de Prestari Servicii:
Astfel, daca salariul brut este sub 500.000 lei, impozitul este de 10% din brut, altfel, daca salariul brut
este cuprins intre 500.000 lei si 1.500.000 lei, impozitul este de 50.000 lei + 20% din ceea ce depaseste
500.000 lei salariu brut, daca salariul brut este cuprins intre 1.500.000 lei si 2.500.000 lei, impozitul este
de 250.000 lei + 25% din ceea ce depaseste 1.500.000 lei salariu brut, daca salariul brut este cuprins
intre 2.500.000 lei si 3.500.000 lei, impozitul este de 500.000 lei + 30% din ceea ce depaseste 2.500.000
lei salariu brut, daca salariul brut depaseste 3.500.000 lei, impozitul este de 800.000 lei + 40% din ceea
ce depaseste 3.500.000 lei salariu brut.
Aplicatia este astfel construita incat sa exemplifice (didactic) toate functiile logice .
Intr-un prim pas s-a construit o coloana de “Evaluare logica” care returneaza in functie de un test facut
asupra salariului brut, valoarea logica de fals (FALSE) daca salariul brut este text, blank sau este mai mic
ca zero si returneaza valoarea logica de adevar (TRUE) in caz contrar.
Intr-un al doilea pas se calculeaza impozitul pe salarii daca coloana “Evaluare logica” (s-a utilizat functia
NOT()) nu contine valoarea logica FALSE.
In aplicatia de mai sus s-a construit o structura conditionala imbricata, unde s-a exemplificat intr-o ramura
IF si functia logica AND.
Pornind de la un tabel definit pe coordonatele A6:H17, considerat a fi o baza de date care repertoriaza
facuturile emise de o firma catre clientii sai, se pot pune in evidenta cu ajutorul functiilor tip baza de date,
informatii calculate potrivit unor interogari specifice.
Prezentam in figurile 1.67- 1.68 cateva exemple de utilizare a functiilor tip baza de date, utilizand campuri
de criterii definite de utilizator potrivit unor cerinte de interogare.
=ROW(referinta celulara sau camp) returneaza numarul liniei corespunzatoare referintei celulare sau
numarul primei linii a campului specificat ca argument;
=AREAS(referinta celulara) indica numarul de zone contigue dintr-un camp. Daca respectivul camp
contine mai multe zone contigue, atunci argumentul se mai inchide intr-o paranteza suplimentara;
In figura de mai jos sunt prezentate mai multe exemple de utilizare a functiilor enumerate mai sus.
=VLOOKUP(cheie;camp de consultare;coloana de recuperat) returneaza continutul unei celule ce
figureaza intr-o coloana dintr-un tablou de consultare verticala.
In mod obligatoriu tabelul de consultare va fi sortat crescator dupa coloana care contine valorile cheii de
consultare (comanda Data Sort, iar in rubrica Sort by se va preciza numarul sau numele coloanei dupa
care se va face sortarea)
=HLOOKUP(cheie;camp de consultare;linie de recuperat) returneaza continutul unei celule ce
figureaza intr-o anumita linie a unui tablou de consultare orizontala.
Argumentul cheie (sub forma unei referinte celulare sau nume de camp) va fi cautat in prima linie a
campului de consultare, iar daca valoarea va fi gasita pe un numarul de linie precizat de ultimul argument,
valoarea respectiva va fi returnata de functia HLOOKUP.
In mod obligatoriu tabelul de consultare orizontala trebuie sortat dupa valorile crescatoare ale cheii de
consultare aflate in prima linie (sortare de la stanga la dreapta). Daca valorile cheii nu sunt sortate, se va
selecta tabelul de consultare si se va activa comanda de sortare (de la stanga spre dreapta): Data Sort,
butonul Option si din rubrica Orientation se alege optiunea Sort left to right.
Daca informatia cautata in tabelul de consultare verticala sau orizontala nu va fi gasita, se va returna cea
mai apropiata valoare (pe vericala sau pe orizontala) de cheia de consultare.
Firma isi are inregistrati clientii intr-o baza de date (definita pe coordonatele E1:I7) (figura de mai jos) care
regrupeaza elementele de identificare ale acestora (“Client”, “Adresa”, “Localitate”, “Cod fiscal”, “Cont
bancar”).
In egala masura exista si o alta baza de date –definita pe coordonatele A20:C28 (figura de mai sus) sub
forma unui nomenclator de preturi pentru fiecare produs in parte. Cele doua baze de date sunt sortate
dupa valorile crescatoare ale primei coloane si contin informatii pertinente ce concura la realizarea
automata a facturii.
La calculul "Valorii" se va lua in calcul si o cota variabila de adaos comercial (celula D10 a fost fixata cu
adresa absoluta -$D$10- pentru a nu se decala la copierea formulei ce calculeaza valoarea), precum si
cheltuielile de transport. “Majorarile” de intarziere se pot calcula pe transe, prin structuri conditionale
imbricate. “TVA”-ul reprezinta 22% din “Valoare” + “Majorari”, iar “Valoarea facturii” reprezinta suma
dintre “Valoare”, “Majorari” si “TVA”.
Intr-un al doilea timp se pot calcula totalurile pe rubricile procesate anterior utilizand clasica functie SUM.
Interesante de prezentat sunt facilitatile de consultare verticala si orizontala.
La tastarea numelui de client in celula C3, se vor recupera automat dintr-un tabel de consultare verticala
(definit anterior pe coordonatele E1:I7), informatiile legate de acest identificator si anume: “Adresa”,
“Localitatea”, “Codul fiscal” si “Contul bancar”.
Astfel in celula C4 s-a scris formula de consultare verticala (VLOOKUP) (figura 1.74) pentru recuperarea
adresei clientului, anume: “se cauta cheia de consultare (celula $C$3-Client) in tabelul de consultare
definit pe coordonatele $E$1:$I$7 si in caz ca valoarea este gasita, se va recupera informatia din
coloana 2, corespunzatoare cheii de consultare”.
Coordonatele cheii si tabelului de consultare au fost blocate prin utilizarea de adrese absolute pentru ca
formula ce contine consultarea verticala sa poata fi copiata fara ca respectivele coordonate sa se
decaleze.
Functia de consultare verticala
Cheia de consultare fiind in acest caz de tip text nu trebuie sa aiba valori vide si nici numerice. Pentru
aceasta, procedura de consultarea verticala a fost completata cu teste facute asupra celulei care contine
cheia de consultare ($C$3). Daca cheia are valoarea vida “ISBLANK($C$3) sau (OR()) daca contine o
valoare alta decat text “ISNONTEXT($C$3), atunci se va afisa un spatiu (“”), altfel se va face consultarea
verticala.
In aceste conditii, consultarea verticala va avea urmatoarea forma:
=IF(OR(ISBLANK($C$3);ISNONTEXT($C$3));””;VLOOKUP($C$3;$E$1:$H$7;3)), fapt ilustrat si in figura
Daca se tasteaza un client care nu exista in nomenclatorul de clienti (in tabelul de consultare verticala),
functia VLOOKUP nu va semnala lipsa informatiei din tabel ci va returna informatia legata de cea mai
apropiata valoare a cheii de consultare. De exemplu, daca s-ar introduce clientul cu numele “Sarmis”,
se vor recupera prin VLOOKUP informatiile aditionale corespunzatoare celei mai apropiate valori ale
cheii, adica informatiile legate de clientul “Star”. Functia VLOOKUP nu va semnala inexistenta cheii de
consultare “Sarmis”. Pentru inlaturarea acestui neajuns, procedura de consultare verticala a fost
completata cu un test de existenta a cheii ce consultare in tabelul de consultare”.
Acest test de existenta verifica daca valoarea cheii de consultare este gasita in prima coloana a tabelului
de consultare. Daca valoarea respectiva exista in tabel inseamna ca s-a gasit cheia de consultare si in
consecinta consultarea verticala se va efectua returnand un rezultat corect, altfel se va afisa spatiu sau
zero (ultimul caz folosindu-se daca celula respectiva participa ulterior la calcule) sau un mesaj de genul
“cheie inexistenta”.
Daca cheia este gasita in tablou, se va recupera numarul de linie care va contine valoarea cheltuielilor de
transport corespunzatoare destinatiei specificate.
In exemplul prezentat in figura, s-a operat un mic artificiu, anume "Cantitatea livrata" coincide logic cu
numarul de linie de recuperat orizontal din tablou (astfel, nu s-a precizat numarul liniei recuperate, ci
celula care contine livrata, aflata la adresa C13). Datorita faptului ca procedura de consultare orizontala
este operationala incepand cu linia 1 (care contine invariabil titlurile rubricilor aferente destinatiei), celula
“Cantitatea livrata” va indica numarul liniei de recuperat si va avea valoarea incrementata cu o unitate
pentru a exista o concordanta intre valorile luate de aceasta si numarul liniei de recuperat. Daca nu s-ar
fi operat acest artificiu, numarul liniei de recuperat ar fi decalat cu o unitate (adica, daca celula C13 –
“Cantitatea livrata” – ar fi avut valoarea 3, s-ar fi recuperat linia numarul 3 din tabel –prima linie contine
titlul rubricilor-, adica valoarea cheltuielilor de transport aferente pentru 2 tone transportate)
Prin functia HLOOKUP s-a consultat deci respectivul tablou, cautandu-se valoarea luata de “Destinatie”
in celula $G$10, recuperandu-se numarul de linie ce corespunde logic cu “Cantitatea livrata”.
Tabloul de consultare trebuie in mod obligatoriu sortat alfabetic dupa prima linie a sa.
Procedura de consultare orizontala poate fi completata si astfel imbunatatita (celula D14) prin
urmatoarele teste:
- un test facut asupra celulelor ce contin: “Destinatia” (sa nu fie valoare vida sau numerica) si “Cantitatea
livrata” (sa nu fie valoare de tip text, vida sau zero):
=IF(OR(ISNONTEXT($G$10),ISBLANK($G$10),ISTEXT(C14),ISBLANK(C14),C14=0;0;IF(……) . Daca
cel putin unul din argumente este adevarat, functia va returna valoarea zero, altfel se vor testa si alte
conditii de indeplinit;
- un test de existenta a “Destinatiei” (celula $G$10) in prima linie a tabloului de consultare orizontala:
=IF(OR(…;$G$10<>HLOOKUP($G$10;$F$20:$J$28;1));0;…..). Daca “Destinatia” este inexistenta in
tablou, functia va returneaza valoarea zero, altfel se procedeaza la consultarea propriu-zisa;
- un test de existenta a “Cantitatii livrate” in prima coloana a unui tablou de consultare verticala:
=IF(OR(C14<>VLOOKUP(C14;$E$20:$E$28;1);…….). Daca nu exista valoarea unei cantitati livrate in
tabloul de consultare verticala definit pe coordonatele $E$20:$E$28, functia returneaza zero, altfel se
procedeaza la consultarea propriu-zisa:
(……HLOOKUP($G$10;$F$20:$J$28;C14+1));
- procedura ar putea fi completata si cu un test de efectuare a transportului: astfel, daca transportul este
facut de furnizor (celula $D$8 are valoarea “da”), atunci se procedeaza la testele de mai sus si se
executa in final consultarea orizontala, altfel cheltuielile de transport vor fi zero.
Figura de mai jos indica corespondentele creeate intre diferitele campuri, in procesul de consultare
verticala si orizontala.