Gestiunea bazelor de date și optimizare în Microsoft Excel
Nagy Lajos, Csipkés Margit, Tóth Réka, Kelemen Erzsébet, Pálhegyi-Farkas László
Gestiunea bazelor de date și optimizare în Microsoft Excel
Partiumi Kiadó
Oradea, 2011
REDACTOR ZAKOTA Zoltán Design Bács Bence Tehnoredactare Dr. Tarnóczi Tibor
ISBN-978-606-8156-28-6
Acest manual a fost realizat în cadrul Programului de cooperare transfrontalieră Ungaria-România 2007–2013 (www.huro-cbc.eu), cu finanțarea Uniunii Europene și cofinanțarea Fondului European de Dezvoltare Regională, respectiv a Republicii Maghiare și a României, derulat în cadrul proiectului Computational support for the decision making of the cross-border SMEs (Asistare computerizată în activitatea decizională a întreprinderilor mici şi mijlocii din zona transfrontalieră) CaDS-SMsE HURO/0901/255/2.5.1
Descrierea CIP a Bibliotecii Naţionale a României Gestiunea bazelor de date și optimizare în Microsoft Excel / Nagy Lajos, Csipkés Margit, Tóth Réka, .... - Oradea : Partium, 2011 ISBN 978-606-8156-28-6 I. Nagy, Lajos II. Csipkés, Margit III. Tóth, Réka 004.42 EXCEL
Două țări, un scop, succes comun!
CUPRINS
CUPRINS .................................................................................................................................. 1 INTRODUCERE ......................................................................................................................... 4 1. NOȚIUNI FUNDAMENTALE PRIVIND BAZELE DE DATE.......................................................... 5 1.1. BAZE DE DATE RELAȚIONALE, NORMALIZARE ..................................................................................5 1.2. TABELUL - BAZĂ DE DATE .........................................................................................................11 1.2.1. Crearea unui tabel - bază de date din date existente ...............................................12 1.2.2. Crearea unui tabel-bază de date gol ........................................................................16 1.2.3. Introducerea datelor cu formular de introducere a datelor (Form) ..........................17 1.3. TRANSFORMAREA TEXTULUI ÎN TABEL ........................................................................................20 1.4. ELIMINAREA REPETIȚIILOR DIN BAZA DE DATE...............................................................................24 1.5. FORMULE, FUNCȚII, REFERINȚE LA CELULE (ADRESE)......................................................................28 1.5.1. Formule și funcții ......................................................................................................29 1.5.2. Referințe (adrese) relative, absolute și mixte ...........................................................34 1.5.2.1. Ce este referința structurată? ......................................................................................... 42
1.6. VALIDAREA DATELOR ÎN TABELE ................................................................................................44 1.7. PROTECȚIA FIȘIERULUI ȘI PROTECȚIA FOII DE LUCRU.......................................................................65 2. CĂUTARE ȘI FILTRARE ÎN BAZA DE DATE ............................................................................ 71 2.1. CĂUTARE, ÎNLOCUIREA DATELOR ȘI SALTURI ÎN BAZA DE DATE .........................................................71 2.2. UTILIZAREA FUNCȚIILOR DE CĂUTARE .........................................................................................77 2.2.1. Funcția ADDRESS() ....................................................................................................78 2.2.2. Funcția VLOOKUP() ...................................................................................................80 2.2.3. Funcția de căutare HLOOKUP() .................................................................................83 2.2.4. Funcția MATCH() .......................................................................................................87 2.2.5. Funcția INDEX() .........................................................................................................89 2.2.6. Funcția INDIRECT() ....................................................................................................94
1
Două țări, un scop, succes comun!
2.2.7. Funcția LOOKUP() ..................................................................................................... 96 2.2.8. Funcția GETPIVOTDATA() ....................................................................................... 100 2.2.9. Funcțiile COLUMN() și COLUMNS() ......................................................................... 103 2.2.10. Funcțiile ROW() și ROWS() .................................................................................... 106 2.2.11. Funcția AREAS() .................................................................................................... 108 2.2.12. Funcția TRANSPOSE() .......................................................................................... 110 2.2.13. Funcția CHOOSE() ................................................................................................. 111 2.3. ARANJAREA DATELOR ........................................................................................................... 113 2.4. FILTRAREA DATELOR............................................................................................................. 117 2.4.1. Utilizarea filtrării automate.................................................................................... 118 2.4.2. Filtrarea specială sau complexă (filtrare dirijată) .................................................. 121 2.5. FUNCȚII AFERENTE BAZELOR DE DATE ...................................................................................... 124 2.6. APLICAȚIILE FUNCȚIILOR AFERENTE BAZELOR DE DATE ................................................................. 131 2.7. GRUPAREA DATELOR ȘI SUBTOTALURI ...................................................................................... 139 3. ANALIZA SCENARIILOR ..................................................................................................... 146 3.1. ANALIZE TIP ”CE-AR FI DACĂ...” (WHAT IF) ............................................................................... 148 3.1.1. Managerul de scenarii ............................................................................................ 148 3.1.2. Tabelul de date (Data Table) .................................................................................. 156 3.2. CĂUTAREA VALORII ȚINTĂ CU SOLVER ...................................................................................... 162 3.2.1. Căutarea valorii țintă ............................................................................................. 163 3.3. SOLVER ............................................................................................................................. 165 3.3.1. Configurațiile de bază ale Solver ........................................................................... 165 3.3.2. Programarea lineară în rezumat ............................................................................ 172 3.3.3. Prezentarea aplicațiilor Solver................................................................................ 174 3.3.3.1. Schema elaborării unui model de programare lineară în Excel .................................... 174 3.3.3.2. Aplicații Solver .............................................................................................................. 192
4. AUTOMATIZAREA OPERAȚIILOR ...................................................................................... 207 4.1. AUTOMATIZAREA CU AJUTORUL MACROURILOR ......................................................................... 208
2
Două țări, un scop, succes comun!
4.1.1. Inregistrarea unui macro .......................................................................................209 4.1.2. Rularea unui macro ................................................................................................214 4.1.3. Editarea macrourilor ...............................................................................................219 4.1.4. Crearea macrourilor cu ajutorul Microsoft Visual Basic .........................................221 4.1.5. Ștergerea unui macro .............................................................................................222 4.2. PROTECȚIE ÎN CAZUL MACROURILOR ........................................................................................222 4.3. ÎNTOCMIREA FORMULARELOR ................................................................................................225 BIBLIOGRAFIE .......................................................................................................................235 ANEXA ..................................................................................................................................239
3
Două țări, un scop, succes comun!
Introducere Se întâmplă adesea ca programele de administrare a bazelor de date și programele de administrare a tabelelor să fie tratate ca sinonime, deși diferența dintre ele este semnificativă. Programele de administrare a bazelor de date descriu mulțimi de date cu corelațiile complexe existente între ele, pe când programele de administrare a tabelelor se ocupă doar cu prezentarea datelor întro anumită formă. Totuși există și elemente comune, ex. și în programele de administrare a tabelelor există posibilitatea (re)organizării datelor după anumite criterii (ex. după anumite coloane), sau putem întocmi tabele pivot, adică putem selecta anumite elemente dintr-un tabel, sau putem întocmi un nou tabel pe baza unei caracteristici descrise într-un alt tabel utilizând diferite funcții. Deci programele de administrare a tabelelor și cele de administrare a bazelor de date nu se deosebesc întru totul. De exemplu, programul Microsoft Excel, unul dintre cele mai răspândite programe de administrare a tabelelor (calcul tabelar) are și funcțiuni de administrare a bazelor de date.
În acest volum vom trece în revistă noțiunile fundamentale referitoare la bazele de date, vom analiza modul de utilizare a programului Excel pentru elaborarea bazelor de date și modul cum se pot realiza diferite analize de date cu ajutorul acestuia. La sfârșitul cărții vom face cunoștință cu câtevamodalități de automatizare a sarcinilor de rutină zilnică, pentru a ne accelera și eficientiza activitatea.
4
Două țări, un scop, succes comun!
1. Noțiuni fundamentale privind bazele de date 1.1. Baze de date relaționale, normalizare
Baza de date relațională se definește ca fiind totalitatea datelor realizate prin aplicarea principiului modelului relațional de date, adică o mulțime finită a așa numitelor relații definite în cadrul sistemului de noțiuni al modelului relațional de date. Fundamentele modelului au fost publicate în anul 1970 de către Edgar F. Codd, angajat al IBM, în articolul său A Relational Model of Data for Large Shared Data Banks.Cel mai mare avantaj al modelului îl constituie simplitatea și flexibilitatea. Baza de date este formată din tabele (colecții de date) bidimensionale; rândurile se numesc înregistrări (record-uri), iar coloanele se numesc
câmpuri
de
înregistrări
(record-uri).
Rândurile
conțin
date
interdependente din punct de vedere logic, iar coloanele conțin caracteristicile/ atributele datelor. O bază de date constă, în general, în mai multe tabele/colecții de date. Baza de date relațională realizează corelarea tabelelor prin intermediul câmpurilor cu date corelate (cheie). (De exemplu, corelația dintre două câmpuri se realizează dacă acestea au coloane cu aceeași denumire.)
Baza de date relațională poate fi elaborată cu ajutorul soft-ului de gestiune a bazelor de date, special dezvoltat în acest scop, respectiv, în cazul utilizării limbajului standard de acces și interogare (SQL - Structured Query Language) poate fi realizată, editată și interogată prin comenzi scrise.
5
Două țări, un scop, succes comun!
În modelul relațional de bază de date, mulțimea relațiilor și, corespunzător, fiecare element al relației (rând) este unic. Gestionarii bazelor de date relaționale tipice utilizează, totuși, trei modificări: pe de o parte relațiile nu sunt descrise ca mulțimi, ci drept ”saci” (engl.: bag, totalitatea elementelor neorganizate, în care se permit și repetiții), pe de altă parte nu este permis ca o relație să conțină două atribute (coloane) cu denumiri identice, iar în al treilea rând este posibilă utilizarea valorilor nule (goale, necunoscute).
Crearea bazelor de date relaționale constituie domeniul proiectării bazelor de date.
Normalizarea înseamnă sistematizarea datelor aflate în baza de date. Ca rezultate, aceasta poate duce la crearea de tabele și crearea de corelații între ele, pe baza unor reguli. Scopul regulilor este flexibilizarea datelor (ex. eliminarea redundanțelor și corelațiilor inconsistente).
Datele redundante ocupă, inutil, suprafețe ale hard disk-ului, provocând probleme de întreținere. Dacă trebuie modificate date aflate în mai multe locuri, modificarea trebuie realizată identic în fiecare loc. De exemplu, dacă trebuie modificată o anumită informație referitoare la un partener, modificarea este mai simplă dacă informația respectivă figurează numai în tabelul ”Parteneri”, nu și în altă parte a bazei de date.
Ce este corelația inconsistentă? Dacă un utilizator este interesat de adresa unui partener, e de la sine înțeles s-o caute în tabelul ”Parteneri”, dar nu ar fi logic ca 6
Două țări, un scop, succes comun!
salariile angajaților partenerilor să fie stocate în același tabel. Salariul angajatului aparține de angajați, deci trebuie inclus în tabelul ”Angajați”. Urmarea corelațiilor inconsistente poate fi accesul dificil la date, fiindcă drumul de acces la acestea poate fi incomplet sau greșit.
Prin normalizare ne propunem să parcurgem un proces în trepte în urma căruia să formăm grupuri de date legate organic între ele și care depind în întregime de identificatorul unic (cheia primară) al grupului. Normalizarea bazelor de date are unele reguli, numite și forme normale. Dacă baza de date se supune regulii nr. 1, aceasta se află în forma normală 1. Dacă se supune primelor trei reguli, se află în forma normală 3. Astfel pot fi create tabelele tip NF1, NF2, NF3 (BCNF), NF4 și NF5. În practică se utilizează de obicei tabelele NF3.
În cazul formelor normale de rang superior, interdependența datelor se poate exprima prin corelația funcțională: valoarea t(2) a unui tabel T este în corelație funcțională cu valoarea t(1) dacă fiecărei valori t(1) a tabelului îi corespunde numai o singură valoare a lui t(2). Valorile t(1) și t(2) pot fi și complexe. Dacă t(2) depinde funcțional de t(1) dar nu depinde de nici o submulțime a lui t(1), atunci spunem că t(2) este în întregime funcțional dependent de t(1), iar t(1) se numește determinantul lui t(2). Un tabel este de forma NF2 dacă este în NF1 și toate acele atribute care nu sunt chei primare sau părți ale acesteia, sunt total dependente funcțional de cheia primară. Putem vorbi de NF3 dacă tabelul are forma NF2 și toate dependențele provin de la cheia primară. Un tabel poate fi de forma BCNF numai dacă determinanții conținuți în el sunt în același timp și chei primare (ex. Popescu și colaboratorii, 2005). 7
Două țări, un scop, succes comun!
Uneori problemele reale nu pot fi aduse în corespondență totală cu regulile și specificațiile. Normalizarea presupune în general, crearea de noi tabele, ceea ce este o muncă obositoare. Dacă nu îndeplinim una dintre primele trei reguli ale normalizării, trebuie să ne convingem că aplicația elimină eventualele probleme apărute (ex. redundanța datelor și inconsistența corelațiilor).
NF1 (tabel normal de forma 1) este tabelul în al cărui câmpuri apar numai atribute simple. Acesta nu conține două rânduri asemenea, întotdeauna va exista câte un atribut sau mai multe care le deosebesc.
În acest caz, scopul normalizării este eliminarea grupurilor repetate și crearea câte unui nou tabel pentru fiecare mulțime de date corelate.
Tabelulul 1.: Tabel cu repetiții Produs
Distribuție Furnizor Furnizor Locul depozitării 1 2 logică
A
Magazia 1
D30/R
H&K
Futár
B
Magazia 2
Hala A
Sebes
Baracs
Tabelul poate avea numai două dimensiuni. Întrucât unui produs îi corespund mai mulți furnizori, produsele trebuie enumerate într-un tabel separat. La înregistrările de mai sus ale tabelului 1, Furnizor 1 și Furnizor 2 constituie defecte de proiectare.
În tabelele de calcul se utilizează adesea și a treia dimensiune, dar în tabelele de date acest lucru nu este permis. O altă abordare a problemei este că nu pot 8
Două țări, un scop, succes comun!
coexista în același tabel, cele două laturi ale unei corelații tip 1 la n (1 la multe). De aceea vom elimina repetiția (grupul repetat) prin crearea unui tabel de tip NF1 (Tabel 2).
NF2 (forma normală 2)se creează cu scopul eliminării redundanței datelor. În acest scop, pentru grupele de valori referitoare la mai multe înregistrări vom crea tabele separate. Tabelele le com interconecta cu chei exterioare. Înregistrările vor putea depinde numai de respectivele chei primare ale tabelelor (dacă este nevoie,cheii pot fi combinate).
Tabelul 2.: Primul tabel fără repetiții Produs
Locul depozitării
Distribuție logică
Furnizor
A
Magazia 1
D30/R
H&K
A
Magazia 1
D30/R
Futár
B
Magazia 2
Hala A
Sebes
B
Magazia 2
Hala A
Baracs
În tabelul 2, fiecare produs are mai mulți furnizori. Furnizorul nu depinde funcțional de produs (cheie primară), de aceea relația nu este în forma normală 2.
Prin separarea Tabelului 2 am obținut NF2 (tabelul 3 și tabelul 4).
NF3 (a treia formă normală) se realizează prin filtrarea datelor pentru eliminarea celor care nu depind de cheie. 9
Două țări, un scop, succes comun!
Tabelul 3.: Tabelul Produse Locul depozitării
Produs
Distribuție logică
A
Magazia 1
D30/R
B
Magazia 2
Hala A
În tabelul 3, distribuția logică nu depinde funcțional de locul depozitării. Rezolvarea înseamnă să separăm acest câmp de produse și să înființăm un nou tabel pentru locul depozitării (tabelele 5 și 6).
Tabelul 4.: Originea produselor Produs
Furnizor
A
H&K
A
Futár
B
Sebes
B
Baracs
Tabelul 5.: Noul tabel Produse Produsul
Locul depozitării
A
Magazia 1
B
Magazia 2
Atenție! Deși utilizarea NF3 este necesară teoretic în orice situație, în practică aceasta poate duce la probleme. De exemplu, dacă avem un tabel pentru Clienți și am vrea să eliminăm toateinterdependențele posibile dintre câmpuri, ar trebui 10
Două țări, un scop, succes comun!
să creem tabele separate pentru localități, coduri poștale, reprezentanți comerciali, birouri de aprovizionare și oricare alt element repetitiv din înregistrări. Dar numărul mare de tabele de mici dimensiuni poate reduce eficacitatea, iar numeroasele fișiere deschise ocupă, inutil, memoria. De aceea este recomandat să se utilizeze a treia formă normală numai în cazul în care datele se schimbă des. Dacă rămân câteva câmpuri dependente, aplicația trebuie astfel proiectată încât să ceară utilizatorului, verificarea câmpurilor conexe la fiecare modificare.
Tabelul 6.: Tabelul Locuri de depozitare Locul depozitării
Distribuție logică
Magazia 1
D30/R
Magazia 2
Hala A
1.2. Tabelul - bază de date
Deși în Excel nu avem posibilitatea de a utiliza baze de date relaționale, totuși putem efectua operații asemănătoare celor de gestionare a bazelor de date, astfel putând să ne eficientizăm activitatea de zi cu zi. Tabelul bază de date este bidimensional, așa cum s-a descris în capitolul 1.1. În versiunile anterioare ale Excel, acestea se numeau liste, în timp ce, în Excel 2007 au primit denumirea de tabele. Cu tabelele astfel realizate pot fi efectuate diverse operații specifice bazelor de date, organizări, însumări, fiindcă structura tabelelor respective este asemenea bazelor de date, adică este formată din înregistrări și câmpuri. Când 11
Două țări, un scop, succes comun!
creem un tabel pe o foaie de lucru în aplicația Microsoft Excel, putem trata și analiza datele din tabel în mod independent față de datele dinafara tabelului. Putem filtra coloanele tabelului, putem să-i adăugăm un rând pentru sume, îl putem formata.
De fapt înregistrarea (record) este un rând al tabelului și conține caracteristicile unei unități (ex. denumirea firmei, adresa, numărul de telefon, cifra anuală de afaceri etc.). Câmpul reprezintă o coloană a tabelului, deci cuprinde datele de același fel din toată baza de date (ex. coloana ”Denumirea firmei” va cuprinde toate denumirile firmelor incluse în baza de date).
Deci în Excel, rândurile tabelului vor fi înregistrările, iar denumirile coloanelor vor fi denumirile câmpurilor.
Se pot crea baze de date în mai multe feluri: −
Definim drept bază de date, un tabel completat cu denumiri de câmpuri și cu date;
−
Creem o bază de date goală, apoi o completăm;
−
Utilizăm un formular de introducere a datelor.
1.2.1. Crearea unui tabel - bază de date din date existente
Dacă vrem să transformăm în bază de date un tabel completat, selectăm meniul INSERARE (INSERT), în care din câmpul Tabele (Tables) selectăm iconița Table. 12
Două țări, un scop, succes comun!
Exemplu 1.: Să transformăm tabelul cu lista angajaților în bază de date.
Selectăm tabelul, facem clic pe iconița Table aflată în banda de meniu INSERT, pe locul al doilea din stânga. După clic, zona selectată va fi înconjurată de o linie întreruptă și apare o mică fereastră cu titlul Create table. Aici, dacă este necesar, mai putem corecta selecția, respectiv, selectând opțiunea My table has headers, denumirile câmpurilor se atribuie primului rând al tabelului - bază de date creat (fig. 1.).
Fig. 1.: Crearea tabelului - bază de date
13
Două țări, un scop, succes comun!
Ca rezultat al operațiunii obținem tabelul-bază de date. În primul rând al tabelului vom găsi denumirile câmpurilor (Numele angajatului, Localitatea etc.), iar în celelalte rânduri găsim înregistrările (Fig. 2.).
Fig. 2.: Tabelul - bază de date
Dacă se face clic pe oricare dintre elementele tabelului, la sfârșitul benzii de meniu apare un nou element de meniu (Table Tools/DESIGN) (Fig. 3.).
În cele ce urmează, putem redenumi tabelul (în starea de bază, acesta se numește Table1/TableX, așa cum se vede în partea stângă mijloc a benzii de meniu (Fig. 3.), iar în exemplul nostru îl redenumim Angajați.
Putem de asemenea să extindem baza de date, adăugând rânduri și coloane noi. Acest lucru se realizează inserând date noi în rândul următor sau în coloana următoare. În cazul coloanelor noi nu trebuie scăpat din vedere că în primul rând se înscrie denumirea noului câmp (identificarea coloanei) (Fig. 5.). Astfel, baza de date se extinde automat cu un rând sau o coloană.
14
Două țări, un scop, succes comun!
Fig. 3.: Banda de meniu Table Tools / Design
Fig. 4.: Redenumirea tabelului
15
Două țări, un scop, succes comun!
Fig. 5.: Introducerea de date noi
Excel recunoaște automat, tabelul creat ca în exercițiul anterior, totuși trebuie să avem grijă ca între tabelul existent și noul rând (sau noua coloană) să nu existe rând liber (coloană liberă), fiindcă spațiile libere delimitează baza de date. Pe o foaie de lucru pot fi create mai multe baze de date, dar ne ferim de multe neplăceri dacă pe o foaie de lucru stocăm doar una singură.
1.2.2. Crearea unui tabel-bază de date gol
Pentru a întocmi un tabel gol tip bază de date, selectăm o celulă de pe foaia de lucru Excel, facem clic pe iconița Table din banda de meniu INSERT/Tables. Ca urmare obținem un tabel format din două celule (Fig. 6.). Denumirea coloanei o înlocuim cu denumirea dorită și putem insera noi denumiri de celule pentru a extinde tabelul conform necesităților noastre. După aceea putem începe introducerea înregistrărilor. Și în acest caz trebuie avută grijă să nu rămână rânduri goale în baza de date.
16
Două țări, un scop, succes comun!
Fig. 6.: Tabel gol
1.2.3. Introducerea datelor cu formular de introducere a datelor (Form)
Formularele (form, în lb. engleză) oferă o metodă simplă de completare a unui domeniu de date sau pentru completarea în întregime a tabelului, respectiv verificarea conținutului fără rulare orizontală. Utilizarea formularului de introducere a datelor ușurează mult sarcinile de introducere a datelor, fiindcă nu mai este necesară trecerea de la o coloană la alta când vrem să accesăm mai multe date decât încap pe ecran. Este rațional să utilizăm formularul de introducere a datelor atunci când e suficient un formular simplu, în care câmpurile sunt prezentate ca etichete, iar funcțiile de formular, speciale sau individuale, ex. câmp de listare (cu derulare pe verticală) sau săgeata pentru deplasare între celule nu sunt necesare.
În versiunea de bază, butonul ”form”
nu se găsește în bara de instrumente. Se
poate include în meniul de comenzi rapide prin clic pe CUSTOMIZE QUICK TOOLBAR/MORE COMMANDS. Se caută iconița ”Form” prin Choose commands from, căutând în All commands și făcând clic pe iconița Form.. . 17
Două țări, un scop, succes comun!
(fig. 7. și fig. 8.), apoi pe Add. (nota trad.: iconița va apărea pe bara de comenzi rapide, sub bara de instrumente).
Introducerea datelor este foarte simplă. Selectăm oricare celulă a bazei de date și facem clic pe butonul Form
. Ca exemplu să vedem cum putem introduce date
în tabelul ”Vânzări”. În urma selectării butonului
, lângă tabelul nostru apare o
fereastră cu denumirile câmpurilor și cu datele primei înregistrări (dacă baza de date este goală, în mod normal, fără date). În partea din dreapta sus a formularului vedem numărul rândului (înregistrării) în care ne aflăm și numărul total de rânduri/ înregistrări al tabelului. Deci 1/5 înseamnă că ne aflăm pe rândul întâi, iar numărul total de rânduri/ înregistrări este 5. Dedesubt se găsește butonul New. Făcând clic pe acest buton, ne poziționăm pe următorul rând gol, în care putem introduce date.
Fig. 7.: Introducerea butonului Form în meniul de comenzi rapide (pasul 1)
18
Două țări, un scop, succes comun!
Fig. 8.: Introducerea butonului Form în meniul de comenzi rapide (pasul 2)
Cu butonul Delete se poate șterge înregistrarea actuală. Ștergerea efectuată nu se poate revoca! Cu butonul Restore se pot șterge datele din rândul tocmai completat sau putem restaura datele dintr-o înregistrare pe care tocmai am modificat-o. Butoanele Find Prev și Find Next se utilizează pentru deplasarea pe verticală prin baza de date. Cu butonul Close se poate ieși din baza de date, salvând în același timp, înregistrările și modificările efectuate(Fig. 9.).
19
Două țări, un scop, succes comun!
Fig. 9.: Introducerea datelor cu ajutorul Form (formular de introducere date)
1.3. Transformarea textului în tabel
Se poate întâmpla să putem descărca baze de date de pe internet, din editorul de texte sau din alte surse, doar obținând un format text. Transformarea manuală în tabel este complicată și solicită foarte mult timp. În astfel de situații, expertul din Excel, cu ajutorul căruia conversia se face rapid și destul de precis, este de mare ajutor. Pentru aceasta deschidem banda de meniu DATA, iar din câmpul DATA TOOLS, acționăm comanda Text to columns. (fig. 10.)
Exemplu 2.: Vom arăta pașii conversiei printr-un exemplu. Tabelul 7. prezintă un fragment al unei liste de prețuri pentru plăci ceramice, pe care l-am copiat în Excel de pe site-ul producătorului. Textul copiat conține doar separarea pe rânduri și în final, conținutul coloanei A trebuie aranjat în trei coloane. 20
Două țări, un scop, succes comun!
Fig. 10.: Iconița comenzii Text to columns
Tabelul 7.: Tabelul original
Selectăm domeniul A1:A5, apoi facem clic pe butonul Text to Table. Apare fereastra Convert text to column Wizard (Fig. 11.).
Referitor la tipul datelor inițiale, expertul (wizard) ne propune imediat că datele sunt delimitate prin vreun semn sau spațiu (tab), respectiv dacă se aflau în coloane de lățime fixă. În exemplul nostru, textul dat este delimitat prin semn sau spațiu, așa va apărea și în fereastra Preview of selected data.
În al doilea pas al expertului trebuie să precizăm semnul care delimitează datele. Este simplu, fiindcă la găsirea semnului de delimitare adecvat, în fereastra Data Preview apare o linie despărțitoare. Acum putem verifica și corectitudinea delimitării. 21
Două țări, un scop, succes comun!
Fig. 11.: Transformarea textului în tabel. Pasul 1
În pasul al treilea avem posibilitatea să stabilim tipul datelor din fiecare coloană a noului tabel și locația tabelului (Destination) (Fig. 13.). La precizarea tipului de date din coloană (Column data format) este de ajuns opțiunea General, dar se poate întâmpla că la datele numerice din tabelul original, redate prin fracții zecimale, separatorul nu este virgulă, ci punct. În astfel de cazuri, prin clic pe butonul de comandă Advanced se poate stabili semnul separator, cât și numărul zecimalelor, fiindcă se poate întâmpla ca Excel să interpreteze unele valori numerice ca date calendaristice, aceasta putând fi o sursă de erori în tabel.
Dacă lucrăm corect, obținem un tabel bine organizat, corespunzător scopului nostru. (Tabelul 8.).
22
Două țări, un scop, succes comun!
Fig. 12.: Transformarea textului în tabel. Pasul 2
Fig. 13. Pasul final al transformării textului în tabel
23
Două țări, un scop, succes comun!
Tabelul 8.: Rezultatul transformării textului în tabel
1.4. Eliminarea repetițiilor din baza de date
În subcapitolul 1.1. ne-am ocupat cu bazele de date relaționale și cu diferitele forme normale. Datele identice – redundanțele – pot produce adesea probleme în prelucrarea ulterioară, nemaivorbind de faptul că baza noastră de date se poate umfla inutil.
Pentru eliminarea repetițiilor vom selecta tabelul care conține repetiții, facem clic pe meniul DATA, apoi în banda DATA TOOLS facem clic pe comanda Remove duplicates (Fig. 14.).
Fig. 14.: Iconița comenzii Eliminare dublu
Atenție! După eliminarea repetițiilor, datele originale se șterg, de aceea se recomandă insistent, salvarea unei versiuni inițiale a bazei de date. 24
Două țări, un scop, succes comun!
Exemplu 3.: Tabelul 9. conține datele despre vânzările pe primul trimestru ale unei rețele de magazine en detail. Dacă se studiază tabelul, se constată că acesta conține mai multe repetiții. Fiecare înregistrare conține datele de bază ale magazinelor respective, ceea ce pe de o parte mărește inutil dimensiunile tabelului, iar pe de alta face dificile eventualele modificări. Să eliminăm din tabel, informațiile care nu sunt relevante din punctul de vedere al rezultatelor economice și să construim un tabel al datelor despre vânzări.
Tabelul 9.: Datele despre vânzările unităților comerciale
25
Două țări, un scop, succes comun!
Ca prim pas să facem o copie a bazei de date originale, pe care s-o denumimDate magazine (n. Trad: în acest caz,denumirea bazei de date este denumirea foii de lucru Excel, în stânga jos a foii).
Pentru a crea o copie, se face clic dreapta cu mouse-ul pe titlul Date vanzari al foii de lucru și se selectează comanda Move or copy. (Fig. 15.). Apoi se selectează locul unde se va depozita copia și se bifează pătratul Create a copy. (Fig. 16.). Apoi copia va fi redenumită:Date magazine.
Fig. 15.: Comanda Move or Copy (mutare sau copiere)
În etapa următoare să eliminăm repetițiile din foaia de lucru Date magazine. Se selectează tabelul și se face clic pe comanda Remove Duplicates din bara DATA TOOLS a meniului DATA. În fereastra care se deschide, se bifează numai pătratul dinaintea coloanei Bolt száma (Fig. 17.).
26
Două țări, un scop, succes comun!
Fig. 16.: Realizarea unei copii a foii de lucru
Fig. 17.: Eliminarea repetițiilor
27
Două țări, un scop, succes comun!
După eliminarea repetițiilor rămân 6 rânduri (Fig 18.). Tabelul conține două câmpuri fără legătură cu datele de bază: Perioada (Idıszak) și Vânzări, mii Ft (Forgalom EFt), care pot fi șterse.
Fig. 18.: Lista unităților comerciale după eliminarea repetițiilor
În ultimul pas, din foaia Date vanzarise pot șterge coloanele Șef magazin, Județ, Localitate și Adresă. Drept rezultat al muncii noastre obținem două tabele normalizate, care nu conțin date redundante (Table 10.).
1.5. Formule, funcții, referințe la celule (adrese)
Acest subcapitol nu este strâns legat de capitolele anterioare, iar cele de mai jos vor fi tratate pe larg în alte volume ale seriei. Scopul nostru este o scurtă trecere în revistă a funcțiilor și a referințelor la celule (adrese), pentru a înlesni înțelegerea celor descrise în cartea de față.
28
Două țări, un scop, succes comun!
Tabelul 10.: Tabelele cu datele magazinelor și datele vânzărilor după eliminarea repetițiilor
1.5.1. Formule și funcții
Adesea datele introduse în celulele tabelului provin din calcule efectuate pe baza datelor existente. Calculele se efectuează cu ajutorul formulelor. Formulele sunt ecuații cu ajutorul cărora putem realiza: efectuarea de calcule, redarea informațiilor, modificarea conținutului altor celule, verificarea condițiilor ș.a. Formulele încep întotdeauna cu semnul ”egal ” (=). Formula poate să conțină: funcții, referințe, operatori (semne ale operațiilor) și constante.
Exemplu 4.: Fie formula din celula B4 (Fig. 19.) 29
Două țări, un scop, succes comun!
Fig. 19.: Formulă, referință, operatori, constante
=IF(2*B1^2-(B1-B2)*B1>B3; aria formei geometrice depășește valoarea maximă!; 2*B1^2-(B1-B2)*B1)
În formulă apar: −
Funcția IF () (dacă...),
−
constante (cifra 2, și o constantă text: aria formei geometrice depășește valoarea maximă!)
−
referiri la celule (B1, B2, B3)
−
operatori (*:înmulțire; ^:putere, -: scădere; >: mai mare decât)
Funcțiile pot avea ca rezultate una sau, uneori, mai multe valori. Pentru aceasta, funcțiile au nevoie de date de intrare (parametri, argumente). Acestea pot fi valori (ex. numere) sau referiri la alte celule. Pot fi simple, ex. valoarea celulei C4=C2+C3, dar putem folosi și funcțiile din zestrea Excel sau, la nivel avansat, cu ajutorul Visual Basic Editor putem și noi să creem funcții specifice unui anumit scop. În fiecare caz, funcțiile au denumiri unice. 30
Două țări, un scop, succes comun!
Forma generală a unei funcții este: DENUMIRE FUNCȚIE (parametru 1; [parametru 2]; ...)
Forma generală arată că funcția are o denumire și că între paranteze poate avea mai mulți parametri. Multe funcții pot avea până la 255 de parametri, ex. funcția SUM.
Introducerea unei funcții se poate face astfel: 1.
Putem utiliza Inserarea automată a funcției. Trebuie doar începută scrierea funcției în celulă, cu semnul = sau +, iar sistemul prezintă automat formulele posibile (fig. 20.). De exemplu: Dacă găsim funcția dorită în listă, prin clic simplu se pot obține informații despre aceasta, iar prin dublu clic se poate selecta și utiliza.
Fig. 20.: Inserarea automată a funcției
2.
Dacă nu cunoaștem funcția pe care dorim să o utilizăm, în loc să fie înscrisă în celulă putem opta pentru una dintre următoarele modalități: 31
Două țări, un scop, succes comun!
−
din bara de formule se acționează butonul (fx) (Insert Function), sau
−
se face clic pe Shift F3, sau
−
din bara de meniuri se selectează banda FORMULAS butonul INSERT FUNCTION
−
pe partea dreaptă a benzii HOME, din dreptul simbolului AUTOSUM (∑) din fereastra EDITING (Fig. 21.) se acționează triunghiul de derulare.
Fig. 21.: Inserare de formulă cu iconița AUTOSUM
Putem insera diferite categorii de funcții chiar din meniul FORMULAS, selectând din categoriile de funcții din dreptunghiul FUNCTION LIBRARY (Fig. 22.).
În interiorul panelului INSERT FUNCTION deosebim trei părți: căutarea funcției, categoria funcției și denumirea funcției. Câmpul Căutare funcție (Search for a function) oferă informații despre locul unde trebuie căutată funcția. Or select a category ne ajută să selectăm dintre categoriile de funcții: financiare, date calendaristice, metematică și trigonometrie, matrici, baze de
32
Două țări, un scop, succes comun!
date, text, logice, informație, proiectare, cub, compatibilitate, toate, respectiv ultima funcție folosită (Most recently used) (Fig. 23.).
Fig. 22.: Categorii de funcții din meniul FORMULAS
Fig. 23.: Fereastra de inserare a unei funcții
În cel de al treilea câmp putem alege dintre funcțiile aparținând categoriei date. Dacă facem clic în listă, sistemul vizualizează funcțiile posibile. Când se face 33
Două țări, un scop, succes comun!
clic pe denumirea funcției, în partea de jos a ferestrei apare o scurtă descriere a funcției respective. Putem aplica funcția prin dublu clic pe denumirea acesteia. În acest caz se deschide fereastra funcției cu titlul Function arguments, în care parametrii obligatorii figurează întotdeauna cu litere îngroșate. Restul parametrilor îi introducem în măsura în care avem datele respective.
În grupul FORMULA AUDITING al meniului FORMULAS se pot trece în revistă formulele folosite, cât și referirile funcțiilor la alte celule.
1.5.2. Referințe (adrese) relative, absolute și mixte
Referințele la celule se mai numesc și adrese ale celulelor și sunt de trei feluri: relative, absolute și mixte. Diferitele tipuri de adrese sunt necesare pentru copierea formulelor.
În Microsoft Excel, adresa de bază este adresa relativă. Caracteristica acesteia este că în adresă nu figurează semnul ”dolar” ($). Când se copiază o formulă dintr-o adresă relativă, aceasta se modifică în modul de dorit în operațiile din tabele, respectiv în fiecare celulă nouă se readresează în direcția și la distanța la care s-a copiat formula. De exemplu, formula din celula A1: =5*A2, copiată în celula B1 devine =5*B2, iar în celula C1 devine =5*C2.
Caracteristica comună a adreselor absolute și mixte este că ele conțin simbolul $. Semnul $ poate sta în fața denumirii liniei și/ sau a coloanei. Pe parcursul
34
Două țări, un scop, succes comun!
copierii, coordonata în fața căreia se găsește semnul $ nu se modifică. Atunci când conținutul unei celule reprezintă o constantă într-o formulă, această adresă va fi adresă absolută. În adresa absolută, semnul $ stă atât înaintea coordonatei liniei, cât și înaintea coordonatei coloanei. În cazul adresei mixte, semnul $ apare numai în fața denumirii liniei sau a coloanei. Pentru plasarea semnului $ în fața unei coordonate se poate utiliza tasta $ sau tasta F4.
Exemplu 5.: Pentru mai buna înțelegere a referinței absolute și relative am pregătit o aplicație ca exemplu. La totalizarea pe rânduri și coloane am utilizat referința relativă, pe când la valorile distribuției am utilizat referințe absolute. (Tabelul 11.).
Tabelul 11.: Exemplu de referină absolută și referință relativă
3.
Dacă nu cunoaștem funcția pe care dorim să o utilizăm, în loc să fie înscrisă în celulă putem opta pentru una dintre următoarele modalități: −
din bara de formule se acționează butonul (fx) (Insert Function), sau
−
se face clic pe Shift F3, sau 35
Două țări, un scop, succes comun!
−
din bara de meniuri se selectează banda FORMULAS butonul INSERT FUNCTION
−
pe partea dreaptă a benzii HOME, din dreptul simbolului AUTOSUM (∑) din fereastra EDITING (Fig. 21.) se acționează triunghiul de derulare.
Fig. 24.: Câmp calculat într-un tabel
Ca prim pas, înscriem în celula D1, titlul Adaos comercial %, prin aceasta adăugăm tabelului nostru un câmp nou. În celula D2 calculăm adaosul comercial în procente al magazinului nr. 123, scriind formula ”=C2/B2” (Fig. 24.). Tastând ENTER, celelalte celule ale coloanei se completează automat. Stabilim formatul % și astfel, problema este rezolvată (Fig. 25.).
Exemplu 7.: Să rezolvăm aceeași problemă, introducând formula nu prin tastare/ dactilografiere, ci prin selectarea celulelor. În acest caz formula devine =[@[Adaos comercial mii Ft]]/[@[Vânzări mii Ft]], iar noi am realizat așa zisa referință structurată (fig. 26.). Și în acest caz, după tastarea Enter se completează restul celulelor, cu același rezultat ca în fig. 26. 36
Două țări, un scop, succes comun!
Mai încolo, în acest capitol ne vom ocupa și mai amănunțit de referințele structurate.
Fig. 25.: Câmpul calculat după completarea automată
Fig. 26.: Câmp calculat cu referință structurată
În baza de date putem insera și un rândsumă, astfel: Facem clic pe o celulă a tabelului. La mijlocul submeniului TABLE TOOLS–DESIGN se găsește capitolul Table Styles, aici vom bifa dreptunghiul Total Row. (fig. 27.).Ca efect, Excel calculează automat, suma ultimei coloane care conține valori numerice. Totuși, putem calcula și sume pentru celelalte coloane.
După crearea rândului sumă, dacă se completează baza de date cu noi înregistrări, rândurile corespunzătoare vor apărea deasupra rândului sumă. 37
Două țări, un scop, succes comun!
Inerarea se poate efectua și așa, că selectăm rândul sumă și inserăm deasupra un rând nou, sau, mai simplu, fixăm cu mouse-ul,triunghiul din colțul ultimei celule a rândului sumă și tragem în jos tot rândul.
Fig. 27.: Adăugarea rândului sumă la un tabel
Deși prin selectarea dreptunghiului Total Row, Excel calculează sumă doar pentru ultima coloană, putem însuma celelalte coloane prin utilizarea funcției adecvate (fig. 28.).
În fig. 28, în rândul sumă am calculat vânzările totale (celula B8), adaosul comercial în mii Ft (celula C8) și adaosul comercial mediu în % (celula D9) (fig. 29.).
Calculul sumelor se realizează cu ajutorul funcției Subtotal. Numele funcției nu trebuie să inducă în eroare: aceasta poate realiza mai mult decât simple adunări, fiind un instrument pentru analize variate.
38
Două țări, un scop, succes comun!
Fig. 28. Introducerea funcției dorite în rândul sumă
Fig. 29.: Tabelul Vânzări după calculul rândului sumă
Sintaxa funcției este =SUBTOTAL(function_num, ref1,[ref2],...]),
care conține următoarele argumente: 39
Două țări, un scop, succes comun!
•
Function_num: este obligatoriu de introdus. Este un număr cu valorile între 1 și 11 (când trebuie incluse și valorile ascunse) sau între 101 și 111 (când valorile ascunse trebuie ignorate). Definește funcția utilizată la stabilirea sumei parțiale, conform tabelului 16. Valori ascunse pot apărea în cazul bazelor de date filtrate. De exemplu, dacă ne interesează vânzările sau numai adaosul comercial al magazinelor cu o cifră de afaceri de peste 5 milioane de forinți, atunci celelalte valori rămân ascunse.
Tabelul 16.: Codurile de funcție ale funcției SUBTOTAL () Function_num (când trebuie incluse şi valorile escunse) 1 2 3 4 5 6 7 8 9 10 11 •
Function_num FuncŃia (când valorile ascunse trebuie ignorate) 101 AVERAGE 102 CountA 103 COUNTA 104 MAX 105 MIN 106 PRODUCT 107 STDEV 108 STDEVP 109 SUM 110 VAR 111 VARP
Ref1: este obligatoriu de introdus. Este primul domeniu sau referință, cu denumire proprie, a cărei sumă parțială dorim să fie calculată.
40
Două țări, un scop, succes comun!
•
Ref2,...: nu este obligatorie introducerea. Se referă la domeniul numărul 2 până la 254 pe care trebuie calculată suma parțială. Observații: Dacă în domeniile ref1, ref2, ... există, deja, sume parțiale încorporate, funcția le va ignora.
•
În cazul când constantele Function_num iau valori de la 1 la 11, SUBTOTAL() va lua în considerare valorile ascunse prin șirul de comenzi Excel–Home–Cells–Format–Visibility-Hide&Unhide-Hide
Rows.
În
cazul valorilor constantelor Function_num cuprinse în intervalul 101–111, SUBTOTAL() nu ia în considerare valorile ascunse prin șirul de comenzi de mai sus. Aceste constante servesc la calcularea sumelor parțiale ale valorilor neascunse din listă. •
Funcția SUBTOTAL() a fost proiectată pentru obținerea totalurilor parțiale ale coloanelor de date sau a domeniilor verticale; nu se poate utiliza pentru totalizarea domeniilor orizontale. De exemplu, dacă se totalizează un domeniu orizontal cu o valoare a lui Function_num cuprinsă între 101 și 111, ex. SUBTOTAL(109; B2:G2), ascunderea vreunei coloane nu va influența suma parțială, în timp ce ascunderea vreunui rând al domeniului vertical va influența această sumă.
•
Dacă printre referințe figurează o referință tridimensională, SUBTOTAL() va reda ca rezultat, mesajul de eroare #VALUE!.
Formulele din rândul sume al fig. 29.: B8 = SUBTOTAL(109; [Vânzări mii Ft]) C8 = SUBTOTAL(109; [Adaos com Mii Ft])
41
Două țări, un scop, succes comun!
D8 = Vânzări[[#Sume]; [Adaos com mii Ft]] / Vânzări[[#Sume]; [Vânzări mii Ft]]
În celulele B8 și C8 am calculat sumele Vânzăriși Adaos comercial, de aceea figurează atributul numeric Function_num de 109 aferent funcției SUM, iar în parantezele drepte figurează denumirea domeniului care conține datele. În celula D8 am calculat adaosul comercial mediu în %, prin împărțirea celulelor =D8/C8 și se poate observa că și aici există referințe structurate. Pentru o mai bună înțelegere, în cele ce urmează trecem în revistă, referințele structurate.
1.5.2.1. Ce este referința structurată?
Referințele structurate simplifică mult și fac de la sine înțeleasă prelucrarea datelor din tabele cu ajutorul formulelor, atât referitor la o parte a tabelului, cât și la întregul acestuia. Întrucât domeniile de date ale tabelelor se modifică adesea, iar adresele din referințele structurate se adaptează automat la modificările respective, această funcțiune reprezintă un uriaș avantaj: în cazul modificărilor de structură ale tabelelor (inserarea și ștergerea liniilor și coloanelor), respectiv în cazul împrospătării datelor din exterior, necesitatea rescrierii formulelor scade la minim.
Așa cum am văzut deja, Excel conferă fiecărui tabel nou, o denumire de bază (Tabel1, Tabel2, ...), unic în cadrul fișierului respectiv. La rândul nostru putem modifica denumirea cu ușurință, pentru a o face mai sugestivă,ex. denumirea 42
Două țări, un scop, succes comun!
Tabel1 am transformat-o în Vânzări, prin șirul de comenzi Design – Properties – Table name, dar și prin fereastra Rename.
Denumirea tabelului se referă la întreg domeniul de date al tabelului, cu excepția rândului de titluri și a rândurilor sume (totalizatoare). Tabelul denumit Vânzări din fig. 30. referă la domeniul de celule A2:D7.
La fel cu denumirile tabelelor, și titlurile coloanelor desemnează coloane întregi, cu excepția rândului de titlu și a rândurilor totalizatoare. În exemplul nostru, denumirea [Vânzări mii Ft] se referă la domeniul de celule B2:B7, [Adaos comercial mii Ft] se referă la domeniul de celule C2:C7. În afara câmpurilor întâlnim și marcaje speciale. Astfel sunt marcajele #Toate, care se referă la întregul tabel (A1:A8), #Date care se referă numai la date, #Titluri care desemnează numai titlurile coloanelor (A1:D1), #Sume(A8:D8). Marcajul @ desemnează rândul actual (fig. 30.).
Fig. 30.: Elementele de referință structurată ale tabelului Vânzări
43
Două țări, un scop, succes comun!
Pe baza celor expuse vom înțelege ce înseamnă formula = [@[Adaos comercial mii Ft]] / [@[Vânzări mii Ft]] înscrisă în celula D2 din fig. 26. Expresia @[Adaos comercial mii Ft] înseamnă intersecția câmpului Adaos comercial mii Ft cu rândul actual, deci dacă ne aflăm în celula D2, se referă la elementul C2, iar @[Vânzări mii Ft] înseamnă elementul B2. Astfel devine de la sine înțeles că formula înscrisă în celula D2 fără referință structurată este =C2/D2.
1.6. Validarea datelor în tabele
În acest subcapitol vom face cunoștință cu o funcțiune Excel importantă: validarea datelor. Cu ajutorul acestei funcțiuni putem adăuga tabelelor Excel diferite elemente dinamice fără a face apel la macrouri sau la elementele de programare din Visual Basic. Ce înseamnă aceasta?
Prin aplicarea validării datelor se poate reglementa natura datelor care pot fi inserate în anumite celule. Astfel, la introducerea datelor din chestionare într-o bază de date, prin aplicarea acestei funcțiuni se pot elimina problemele datorate greșelilor de introducere a datelor.
Validarea datelor este deosebit de utilă atunci când un fișier este partajat între mai mulți utilizatori ai aceleiași organizații și dorim ca datele înscrise în el să fie precise și consistente.
44
Două țări, un scop, succes comun!
Când este oportună folosirea validării datelor? −
Când putem alege numai dintre răspunsuri prestabilite. De exemplu, la urmărirea frecvenței școlare se pot înscrie în celule numai zilele de lucru. Se
va
enumera
într-o
listă
separată, care sunt zilele pe care sistemul le acceptă pe parcursul introducerii datelor. −
Restricționarea
numerelor
care cad în afara unui domeniu dat: −
Restricționarea termenelor pentru a se încadra într-un interval
dat:
În
cazul
evidenței consultațiilor medicale, dacă orarul de consultație este 8.0012.00, intrarea pacienților se poate înscrie numai în acest interval orar. −
Restricționarea numărului caracterelor text: stabilirea lungimii textului care se poate înscrie într-o celulă dată.
−
Validarea datelor pe baza formulelor sau valorilor din alte celule: dacă am 10 lei, nu pot cumpăra pentru 20 de lei o cutie de ciocolată.
Exemplu 9.: vrem ca într-o celulă să poată fi introduse numai numere întregi cuprinse între 1 și 100. În cazul înscrierii unei valori invalide, Excel revine cu un mesaj de eroare, împiedicând introducerea datei incorecte (fig. 31.).
45
Două țări, un scop, succes comun!
Fig. 31.: Mesaj de eroare la introducerea unei date invalide, în cazul aplicării validării datelor
Validarea datelor se poate realiza cu șirul de comenzi DATA–DATA TOOLS– Data Validation (fig. 32.).
În mod implicit, într-o celulă pot fi înscrise orice fel de date (fig. 33.). Aceasta este configurația de bază în Excel. Pentru a determina natura datelor care se pot înscrie în celule, avem la îndemână diverse instrumente.
Fig. 32.: Selectarea comenzii Validare date...
Posibilități de introducere a restricțiilor: Exemplu 10.: Restricționarea datelor introduse la numere întregi cuprinse între anumite valori. 46
Două țări, un scop, succes comun!
Fig. 33.: Posibilități de validarea datelor
Din fereastra Allow (Permite) care se derulează (v. Fig.33.), se selectează opțiunea Whole Number (Număr întreg). Prin lista Data, Excel oferă mai multe opțiuni de restricție, dintre care vom selecta varianta optimă pentru noi (fig. 34.).
Fig. 35. prezintă utilizarea validării datelor printr-un exemplu de chestionar simplu. În chestionar există patru întrebări care solicită evaluarea unor însușiri pe câte o scală de la 1 la 5. Deci trebuie să împiedicăm înscrierea - chiar și accidentală - a oricărei valori în afară de 1, 2, 3, 4 sau 5.
47
Două țări, un scop, succes comun!
Fig. 34.: Posibilități de restricționare a introducerii numerelor întregi
Fig. 35.: Exemplu de validare a datelor 48
Două țări, un scop, succes comun!
Întrucât aici avem de-a face cu un interval, selectăm opțiunea between (între valorile), unde valoarea minimă va fi 1, iar cea maximă: 5. În afara acestei setări mai putem introduce mesaje de atenționare (Input Message) și de eroare (Error Alert) (fig. 36.).
Fig. 36.: Restricționarea datelor introduse la numere întregi
Pentru vizualizarea mesajelor de atenționare, la selectarea celulei se bifează căsuța ”Show input message when cell is selected”. Apoi introducem titlul mesajului de atenționare, iar în fereastra de jos, textul mesajului. Mesajele de atenționare au un rol important în informarea utilizatorului; prin folosirea acestora, introducerea datelor poate deveni mai inteligibilă și mai clară. În exemplul nostru atenționăm utilizatorul să introducă cifre de la 1 la 5 și îl informăm și despre semnificația acestora. Ca efect al mesajului, când se face clic pe celula C9, apare atenționarea, facilitând înscrierea datelor. 49
Două țări, un scop, succes comun!
Fig. 37.: Inserarea mesajului de atenționare
Fig. 38. Așa apare mesajul de atenționare când seface clic pe celula validată
50
Două țări, un scop, succes comun!
Mesajul de eroare (Error Alert) apare când introducem o valoare invalidă în celula cu date validate. Mesajul ca atare apare numai dacă bifăm căsuța ”Show error alert after invalid data is entered”. În lista Style putem alege între trei tipuri de mesaje, a căror explicație amănunțită se vede în fig. 39.
Revenind la exemplul nostru, în acest caz fiind vorba despre note acordate, nu vom accepta introducerea de date greșite, de aceea alegem stilul Stop (Megállás). În mesaj notificăm utilizatorul să introducă valori de la 1 la 5, deci îl ajutăm în corectarea greșelii (fig. 40.).
Fig. 39.: Tipuri de mesaje de eroare
Exemplu 11.: Restrângerea datelor introduse la o fracție zecimală cuprinsă între două valori limită.
51
Două țări, un scop, succes comun!
Fig. 40.: Configurarea mesajului de eroare
Din fereastra Allow (Permite) care se derulează, se selectează opțiunea Decimal (v. Fig. 33.). Din lista Data, Excel oferă diferite variante corespunzătoare cerințelor restrictive, dintre care putem selecta varianta corespunzătoare. Opțiunile se aseamănă cu cele deja întâlnite în cazul numerelor întregi (fig. 34.).
În celula B1 trebuie introdus rabatul, care nu poate depăși 60%. Deci, pentru a preveni greșelile de introducere a datelor, vrem ca utilizatorul să nu poată insera valori mai mari.
Ca prim pas, formatăm celula B1 pentru procente, cu precizia de o zecimală (fig. 41.). Pentru aceasta vom face clic pe butonul Procente Creștere număr zecimale (Increase Decimal)
52
, apoi, după clic pe
, reglăm precizia la 1 zecimală
Două țări, un scop, succes comun!
(acest lucru este necesar fiindcă în configurația de bază, butonul Procente
se
referă la valori întregi ale procentelor).
Fig. 41.: Formatarea celulei B1
Pasul următor este introducerea reglajelor de validare a datelor. Din lista Allow selectăm opțiunea Decimal (fracție zecimală) in fereastra Data alegem less than or equal to (mai mic sau egal), drept valoare maximă înscriem 0.6 (fig. 42.). Bineînțeles, și aici se poate configura mesaj de atenționare și regula de aplicat în cazul introducerii de date invalide. În exemplul nostru am aplicat mesajul de eroare Stop (fig. 43.).
Exemplu 12.: Limitarea datelor introduse la o listă de valori
E o problemă frecventă în bazele de date din Excel că în tabel apare de mai multe ori aceeași denumire, dar din cauza unor mici greșeli de tastare apar diferențe de formă. De exemplu, denumirile Budapest, B.pest, Budap., Bp. înseamnă, în fond, același lucru. Totuși, când vrem să totalizăm sau să filtrăm vânzările din Budapesta, multitudinea de denumiri creează probleme. Pentru a evita această eroare, există diferite variante. O posibilitate este codificarea 53
Două țări, un scop, succes comun!
orașului, ex. codul 1 pentru Budapesta, după care, dacă e nevoie, denumirea corespunzătoare codului se introduce cu o funcție de căutare. O altă variantă mai simplă este limitarea datelor introduse la o listă de valori, adică utilizarea funcției de validare a datelor.
Fig. 42.: Introducerea condițiilor de validare a datelor pentru fracții zecimale
Fig. 43. Mesaj de eroare în cazul introducerii datelor invalide
54
Două țări, un scop, succes comun!
În fig. 44. este ilustrat modul de restricționare a datelor introduse printr-o listă prestabilită (întrebarea nr. 2).
Fig. 44. Introducerea unei liste de validare a datelor dintr-un domeniu extern 55
Două țări, un scop, succes comun!
Pentru a evita complicațiile ulterioare la prelucrarea datelor, răspunsul la întrebarea nr. 2 poate fi ales de către utilizator dintr-o listă. Răspunsurile posibile se găsesc pe aceeași foaie, în coloana S2:S9. Primul pas în validarea datelor este listarea răspunsurilor posibile, aceasta va fi sursa listei (în cazul nostru, completarea celulelor S2:S9).
Atenție! Datele din listă și celula în care se inserează valoarea trebuie să se afle pe aceeași foaie de lucru!
În pasul al doilea selectăm, din lista Allow, elementul List, iar lângă acesta selectăm In-cell Dropdown (listă care se derulează). Ca sursă selectăm domeniul S2:S9.
În pasul al treilea și al patrulea putem insera și aici, mesaje de atenționare și de eroare, așa cum s-a explicat mai sus.
După terminarea operațiunii, în celula C6 apare o listă din care utilizatorul poate selecta răspunsul corespunzător printr-un clic (fig. 45.).
Putem introduce drept sursă, nu doar un domeniu extern, ci putem, pur și simplu, să dactilografiem elementele listei, separate prin punct cu virgulă. De exemplu, la întrebarea a treia (Ați găsit ceea ce ați căutat?) dorim să obținem răspunsul DA sau NU în celula C7. Nu dorim răspunsul: în parte, nici prescurtări, ex. Y, N, de aceea restricționăm introducerea datelor prin precizarea Sursei (fig. 46.). 56
Două țări, un scop, succes comun!
Exemplu 13.: Restricționarea datelor introduse la datecalendaristice cuprinse într-un interval de timp
Fig. 45.: Inserarea de date din listă
Fig. 46.: Specificarea listei de validare a datelor prin dactilografiere 57
Două țări, un scop, succes comun!
Din lista Allow să selectăm opțiunea Date. Din lista Data selectăm restricția dorită. De exemplu, pentru a permite date calendaristice ulterioare unei anumite date, selectăm opțiunea Greater than . Să înscriem data inițială, finală sau data concretă permisă. Se poate introduce și o formulă care redă o dată.
De exemplu, dacă dorim să permitem perioada de timp de o săptămână cu începere de azi, din lista Data selectăm opțiunea Between, apoi scriem formula =TODAY() la Minimum, și =TODAY() + 7 în câmpul Maximum.
La fel ca în cazurile anterioare, și aici poate fi inserat un mesaj de atenționare în fereastra corespunzătoare. Apoi putem determina, în fereastra Error Alert, modul în care Microsoft Office Excel va semnaliza dacă utilizatorul a introdus date nevalabile (fig. 47.).
Exemplu 14.: Limitarea datelor introduse la un interval de timp
În panoul Data Validation să acționăm butonul Settings. Din lista Allow se selectează varianta Time. În lista Data se selectează tipul de restricție dorit. De exemplu, pentru a permite momente anterioare unui anumit reper în timp, se alege opțiunea less than. Se va înscrie coordonata de timp inițială, finală sau concretă permisă, dar se poate insera și o funcție care redă un reper în timp.
De exemplu, în celula G2 vrem să fixăm perioada în care într-un un restaurant este servit micul dejun. Dacă vrem ca intervalul de servire a micului dejun să fie de trei ore de la ora deschiderii, din lista Data vom selecta opțiunea between
58
Două țări, un scop, succes comun!
apoi la Start Time înscriem formula =G1, iar în rubrica End Time înscriem =G1+3:00. Vom avea grijă ca atât formatul celulei G1 cât și cel al celulei G2 să fie formate de timp.
Fig. 47.: Introducerea datelor temporale restricționate
Bineînțeles, și în acest caz pot fi specificate mesaje de atenționare care apar la selectarea celulei, respectiv mesaje de eroare în cazul introducerii de date invalide (fig. 48.).
Exemplu 15.: Restricționarea lungimii textului introdus
59
Două țări, un scop, succes comun!
Fig. 48. Limitarea datelor introduse la un interval de timp dat
Din panoul de dialog DATA VALIDATION să facem clic pe butonul Settings. Din lista Allowed să alegem opțiunea Text length. În lista Data vom selecta tipul de restricție dorit. Să înscriem lungimea maximă, minimă sau exactă, permisă, a textului. Putem introduce și formulă a cărei rezultat să fie o valoare numerică. 60
Două țări, un scop, succes comun!
De exemplu, dacă dorim să prevenim greșeala de tastare în rubrica anul nașterii, în celula C18 restricționăm lungimea textului la 4 caractere. Așa cum am procedat și înainte, putem insera un mesaj de avertizare care apare când este selectată celula, respectiv un mesaj de eroare când seintroduc date invalide (fig. 49.).
Exemplu 16.: Calculul valorii permise cu o formulă
Dacă niciuna dintre posibilitățile prezentate anterior nu realizează restricția dorită, atunci în panoul de dialog Data Validation să facem clic pe Settings, iar din lista care se deschide să selectăm opțiunea Custom. În câmpul Formula putem introduce o formulă care are ca rezultat, o valoare logică (în caz de date valide dă rezultatul Adevărat (TRUE), iar în caz de date neconforme, rezultatul Fals (FALSE)).
Să vedem cum funcționează această restricție, cu ajutorul chestionarului studiat anterior. Întrebarea nr. 5 se referă la frecvența cumpărărilor de pe internet. Răspunsurile posibile se regăsesc în tabelul 13.
Întrebarea nr. 6 se referă la procentul de cumpărături efectuale pe internet, de aceea la introducerea datelor am prevăzut o restricție conform căreia, dacă răspunsul la întrebarea nr. 5 a fost ”Niciodată”, atunci respondentul să nu poată răspunde la această întrebare.
61
Două țări, un scop, succes comun!
Fig.49.: Limitarea numărului de caractere
Bineînțeles, la fel ca în cazurile anterioare, și aici putem introduce mesaj de avertizare și, pentru cazul înscrierii de date neconforme, mesaj de eroare (fig. 50.).
62
Două țări, un scop, succes comun!
Tabelul 13.: Răspunsurile posibile la întrebarea nr. 5 din chestionar Întrebarea 5 Niciodată O dată pe an Anual de mai multă ori O dată pe lună Lunar de mai multă ori Săptămânal
Fig. 50.: Validarea datelor cu ajutorul formulei 63
Două țări, un scop, succes comun!
Pe lângă cele prezentate în exemplul model, validarea datelor cu ajutorul formulei are multe alte utilizări practice (tabelul 14.).
Tabelul 14.: Câteva exemple de validare de date cu formule Mesaj de atenționare In celula curentă(B1) introducerea datelor este posibilă dacă D1 și D2 este mai mică decât 1000000
Funcția =AND(D1>0; D1<1000000)
În celula curentă (B3) puteți inrtoduce date, dacă E1 și E2 sunt mai mari decât 16000 și mai mici decât 2000000
=AND(E1<=16000; E2<=2000000)
Vârsta unei muncitori (B4) întotdeuna este mai mare decât vârsta minimă de lucrare (18) plusz numărul anilor lucrate
=IF(B4>F1+18; TRUE; FALSE)
Celula care conține codul unei marfă (B5) întodeuna începe cu ”ID” și are minim 10 caractere
=AND(STÂNG(B5; 3)= "ID-"; LENGTH(B5)>9)
Sursa: Excel Help Din exemple se poate vedea că programul de gestionare a tabelelor Excel permite restricționarea pe scară largă adatelor înscrise în celule, chiar și fără cunoștințe minime de programare. Este posibil ca într-o primă fază, setările de validare a datelor să pară oarecum complicate, cu un volum de muncă relativ mare, dar nu trebuie să uităm că analizele, calculele, deducțiile făcute dintr-o bază de date grevată de greșeli de logică și de introducere a datelor pot provoca pagube considerabile. Mai mult, filtrarea greșelilor comise pe parcursul introducerii datelor, dintr-o bază de date completă, cere mult mai mult timp și nu există siguranța că se pot elimina toate erorile.
64
Două țări, un scop, succes comun!
1.7. Protecția fișierului și protecția foii de lucru
Când creem un tabel, apare adesea cerința ca utilizatorii să nu poată – din întâmplare sau voit – modifica, rearanja sau șterge date importante, formule în foaia de lucru sau în fișier. Cu ajutorul protecției foilor de lucru fau a fișierelor putem proteja anumite elemente ale acestora, cu sau fără utilizarea unor parole. Dacă protejăm doar foaia de lucru sau anumite elemente ale acesteia, în general o facem cu scopul de a preveni eventualele greșeli întâmplătoare ale utilizatorilor, cum ar fi suprascrierea unor date importante sau formule. Împotriva utilizatorilor rău intenționați este indicată protejarea prin parolă a întregului fișier. În cele ce urmează vom prezenta, cu ajutorulexemplului simplu din fig. 9., modalitățile de protejare a muncii noastre cu ajutorul Excel.
Exemplu 17.: nostru dorim, ca prim pas, ca utilizatorul să poată modifica numai conținutul celulelor B1, B2 și B3, fără a putea interveni în vreo altă celulă.
În acest scop mai întâi vom selecta domeniul B1:B3, apoi derulăm în banda de meniu HOME (acasă), în câmpul CELLS (celule), elementul Format și să alegem punctul Format Cells (sau cu butonul dreapta al mouse-ului deschidem meniul local în care alegem Format Cells) (fig. 51.).
După aceasta, din dreptunghiul din dreptul titlului Protection ștergem bifa (în modul de bază, celulele sunt protejate (locked) (fig. 52.). În următorul pas să dechidem din nou în câmpul CELLS din HOME, elementul Format și să selectăm Protect Sheet. Se vede că dreptunghiurile aferente celulelor blocate și, 65
Două țări, un scop, succes comun!
respectiv, celulelor deblocate sunt active. Dacă vrem să împiedicăm selectarea cu cursorul a altor celule cu excepția celor care pot fi completate, trebuie să debifăm căsuța din fața inscripției Locked cells.
Fig. 51.: Selectarea Format Cells
Putem proteja foaia de lucru și prin parolare. Trebuie să reținem parola, fiindcă în cazul pierderii nici noi nu mai putem realiza editări ulterioare (fig. 53.).
66
Două țări, un scop, succes comun!
După activarea protecției foii de lucru, în urma oricărei încercări de modificare a celulelor din afara domeniului B1:B3, primim un mesaj de atenționare.
Fig. 52.: Eliminarea blocării din titlul Protection
Fig. 53.: Posibilități de configurare a protecției foii de lucru.
67
Două țări, un scop, succes comun!
Fig. 54.: Mesaj afișat în cazul încercării de a selecta celule blocate prin protejarea foii
Protecția foii de lucru este foarte utilă, dar protecția structurii întregului fișier, a aranjamentului și dimensiunilor ferestrelor se poate realiza prin protecția fișierului. Pentru aceasta, din meniul REVIEW alegem grupul CHANGES, în care selectăm butonul de meniu Protect Workbook. La stabilirea razei de acțiune a protecției (Structure and Windows) avem două opțiuni: Structure (structura) și Windows (ferestrele) (fig. 55.).
Fig. 55.: Configurarea razei de acțiune a protecției fișierului 68
Două țări, un scop, succes comun!
Dacă se alege butonul Structure (Felépítés), interzicem următoarele manevre de operator: −
Deschiderea foilor de lucru ascunse
−
Reașezarea foilor de lucru, ștergerea, ascunderea, redenumirea acestora.
−
Inserarea de foi de lucru sau foi cu diagrame noi (foaia cu diagramă este o foaie a fișierului care conține numai diagrame. Este utilă când se dorește vizualizarea diagramelor, graficelor ridicate pe baza datelor din foaia de lucru, separat de datele, situațiile de acolo).
−
Relocarea sau copierea foilor de lucru în alt fișier.
−
Vizualizarea datelor sursă ale celulelor din domeniul de date, respectiv vizualizarea foilor e lucru laterale pe foi de lucru separate.
−
Elaborarea de rapoarte centralizatoare despre cazurile înregistrate.
−
Utilizarea instrumentelor de analiză din pachetul Analiza Datelor, prin care rezultatele se plasează pe o foaie de lucru nouă.
În cazul selectării butonului Window (fereastră) interzicem următoarele operații de utilizator: −
Modificarea dimensiunilor și poziției ferestrelor foii de lucru la deschiderea foii de lucru.
−
Reașezarea, redimensionarea și închiderea ferestrelor.
Ca și în cazul protejării foilor de lucru, și aici putem utiliza protecția prin parolă. Dacă nu introducem o parolă, atât protecția foilor, cât și protecția fișierelor pot fi dezactivate: se realizează
prin clic pe Review–Changes–Protect sheets,
69
Două țări, un scop, succes comun!
respectiv Protect workbook. Bineînțeles, dacă există parolă, protecția se poate elimina doar după introducerea parolei.
70
Două țări, un scop, succes comun!
2. Căutare și filtrare în baza de date 2.1. Căutare, înlocuirea datelor și salturi în baza de date
Putem căuta pe întreaga foaie de lucru fără selectare, sau pe un interval selectat al acesteia, astfel: În partea dreaptă a meniului HOME se găsește submeniul EDITING, cu butonul de deschidere a ferestrei Find and Select. Aici putem alege între comenzile Find (căutare), Replace (înlocuire) sau Go To (salt la...) (fig. 56.).
Fig. 56.: Meniul desfășurat al comenzii Căutare și Selecție
La pornirea meniului Căutare scriem în dreptul ferestrei Find what, șirul de caractere pe care îl căutăm și care poate conține litere, cifre, semne de punctuație, respectiv caractere înlocuitoare. Dacă selectăm dreptunghiul Match case (recunoașterea majusculelor și minusculelor), atunci programul va căuta corespondența și în funcție de caracterul literelor. Dacă bifăm dreptunghiul 71
Două țări, un scop, succes comun!
Match entire cell contents, programul va căuta corespondența totală pe foaia respectivă de lucru (fig. 57.).
Fig. 57.: Fereastra meniului de căutare FIND
Din lista Within (domeniul de căutare) se determină dacă cerem căutarea pe foaia de lucru sau în întregul fișier. Din lista Search se determină direcția de căutare: dacă se va efectua pe rânduri sau pe coloane, pornind de la celula dată. Din lista Look in selectăm locurile unde se caută: în formule, în valori sau în comentarii.
Dacă este necesar, în lista Format se poate prescrie cum trebuie să fie celula căutată.Astfel și formatul celulei devine un element al căutării.
Cu ajutorul butonului Next din partea de jos a ferestrei se caută următoarea corespondență, iar cu ajutorul butonului Find All vor fi căutate toate corespondențele. Butonul Close închide căutarea.
72
Două țări, un scop, succes comun!
În meniul Replace putem ordona înlocuirea setului de caractere căutat, printr-un alt set de caractere. Parametrii referitori la căutare sunt similari cu cei descriși la meniul de căutare.
În fereastra Replace with se poate înscrie șirul de caractere prin care vrem să fie înlocuit șirul de caractere vizat. Cu iconița Format se poate stabili formatul celulei după înlocuirea conținutului (fig. 58.).
Fig. 58.: Fereastra meniului de înlocuire Replace
Butonul Find next din partea de jos a ferestrei propune următoarea posibilitate de înlocuire, pornind de la celula dată, iar prin clic pe Replace acceptăm înlocuirea și putem căuta următoarea celulă de înlocuit. Cu ajutorul butonului Find All putem aduna într-o listă toate celulele care corespund criteriului de selecție, care apoi pot fi înlocuite una câte una cu Replace sau toate împreună, cu comanda Replace All.
Meniul Go To (salt la..) se utilizează mai ales la căutarea greșelilor; în acest caz trebuie date locul saltului și valoarea referinței (fig. 59.). Cu ajutorul butonului 73
Două țări, un scop, succes comun!
Special pot fi selectate toate celulele precedente sau următoare, formulele greșite, celulele goale, respectiv diferențele.
Fig. 59.: Fereastra meniului Salt la... (Go to)
Meniul Special poate fi accesat și cu butonul Special al meniului Go To. Putem scrie o adresă de celulă în câmpul Referința al meniului Salt La sau putem alege din Salt La..., unde anume vrem să efectuăm saltul. În cazul utilizării repetate, denumirile de domenii utilizate anterior, respectiv adresele de celule atinse anterior rămân în fereastra Salt La.... Prin selectarea dirijată putem desemna cu ușurință celule cu aceleași caracteristici, iar caracteristicile se aleg în fereastra de meniu (ex. dacă vrem să selectăm celulele care conțin text)
În cazul bazelor de date de dimensiuni nu prea mari mărim claritatea prin butonul HIDE/UNHIDE al benzii VIEW, fiindcă asigură mai mult spațiu pe ecran pentru tabelul nostru. Cu acest buton pot fi vizualizate sau ascunse: bara de instrumente, barele de titlu, rigla, bara de formule, liniile de grilă. O altă 74
Două țări, un scop, succes comun!
rezolvare poate fi comanda VIEW–FULL SCREEN, cu ajutorul căreia putem folosi întregul ecran pentru editarea tabelului.
Un instrument ajutător pentru o mai mare claritate este comanda ZOOM din VIEW, cu ajutorul căreia putem mări sau micșora tabelul de pe ecran.
Dacă tabelul nostru este prea lat sau prea lung, este utilă folosirea butonului Freeze Panes
din VIEW. Scopul acestuia este ca, în cazul tabelelor
mari, zonele de denumiri din partea superioară și stânga să fie mereu vizibile. Înaintea lansării comenzii așezăm cursorul mouse-ului sau selectăm prin tastare, celula deasupra sau la stânga căreia se află zonele cu denumiri ale tabelului nostru. Pentru revocarea comenzii se va utiliza același buton.
Comanda VIEW–SPLIT
împarte ecranul în 2 sau 4 părți, în care pot fi
vizualizate diferite părți ale tabelului. În această situație benzile de derulare se despart. Înaintea lansării comenzii trebuie selectată celula deasupra căreia, respectiv la stânga căreia dorim să împărțim tabelul. Pentru revocarea comenzii se acționează același buton
.
Același scop îl au simbolurile
dinpartea de sus a benzii de derulare pe
verticală și
din capătul dreapta al benzii de derulare orizontale. Aceste
simboluri pot fi prinse și trase cu mouse-ul la locul unde dorim să împărțim tabelul și înapoi.
75
Două țări, un scop, succes comun!
Mai rar se utilizează butonul ARRANGE ALL din VIEW, cu ajutorul căruia putem vedea concomitent pe ecran, diferite părți ale unui tabel mare. Este util să se folosească pentru vizualizarea mai multor fișiere. Aranjarea poate fi sub formă de mozaic, suprapus, alăturat, în trepte, fiind posibilă continuarea activității în alt fișier (fig. 60.).
Fig. 60.: Posibilități de așezare a foilor de lucru cu ajutorul comenzii Arrange All
O nouă oportunitate în Excel 2007 este comanda WATCH WINDOW (fereastra de verificare) din FORMULAS, în care, prin butonul Add Watch putem introduce mai multe celule în fereastra de verificare. Cu ajutorul acestei facilități se poate compara conținutul celulelor selectate, respectiv valorile obținute (fig. 61.).
76
Două țări, un scop, succes comun!
2.2. Utilizarea funcțiilor de căutare
Pe lângă comanda Find putem utiliza și funcțiile de căutare care, în versiunile anterioare, se numeau funcții de căutare și de referință sau funcții matriceale. Cu ajutorul acestora se obțin informații în legătură cu conținutul celulelor (valoare, text, caractere speciale), cât și despre referințe (de exemplu, despre locul celulei cu ajutorul funcției .MATCH()).
Fig. 61.: Afișajul ferestrei de verificare Watch Window
Funcțiile de căutare pot fi accesate cu meniul Lookup and Reference din FORMULAS. Funcțiile de căutare sunt ADDRESS(), AREAS(), CHOOSE(), COLUMN(), COLUMNS(), GETPIVOTDATA(), HLOOKUP(), INDEX(), INDIRECT(),
LOOKUP(),
MATCH(),
ROW(),
ROWS(),
RTD(),
TRANSPOSE(), VLOOKUP() (fig. 62.).
77
Două țări, un scop, succes comun!
2.2.1. Funcția ADDRESS()
Funcția ADDRESS() redă referința corespunzătoare adresei unei celule (numărul rîndului și numărul coloanei). Sintaxa formulei este (fig. 63.): =ADRRESS(Row_num; Column_num; Abs_num; a1; Sheet_text) •
Referințele Row_numși Column_num trebuie să conțină numărul rândului și numărul coloanei careconțin adresa dată.
Fig. 62.: Deschiderea listei funcțiilor de căutare • 78
Abs_num potare fi de 4 feluri:
Două țări, un scop, succes comun!
−
1: referința absolută la rând și coloană; în unele cazuri valoarea poate fi #LIPSĂ;
•
−
2: referință absolută de rând și referință relativă de coloană;
−
3: referință relativă de rând și referință absolută de coloană;
−
4: referință relativă de rând și coloană.
Valoarea lui A1 nu trebuie dată în mod obligatoriu (nu este evidențiat cu litere boldate). Valoarea care caracterizează referința poate fi de două feluri: −
De tip A1: poate avea valoarea1 sau ADEVĂRAT sau nu este precizată, iar atunci valoarea funcției ADDRESS() este egală cu valoarea A1.
−
De tip S1O1: valoarea este 0 sau FALS.
Fig. 63. Argumentele funcției ADDRESS() 79
Două țări, un scop, succes comun!
•
Completarea câmpului Sheet_text nu este obligatorie. Dacă se dă, aceasta trebuie să fie denumirea curentă a foii de lucru. Dacă nu se completează, funcția nu va folosi denumire de foaie de lucru.
În tabelul 15. prezentăm câteva variante posibile ale funcției ADDRESS(), diferențiate pe baza adresei absolute sau adresei relative utilizate ca argumente.
Tabelul 15.: Variantele posibile ale funcției ADDRESS() Funcția
Rezultatul
=ADDRESS(2011; 1)
$A$2011
=ADDRESS(2011; 1; 2)
A$2011
=ADDRESS(2011; 1; 3)
$A2011
=ADDRESS(2011; 1; 4)
A2011
=ADDRESS(2011; 1; 4; TRUE)
A2011
=ADDRESS(2011; 1; 4; FALSE)
S[2011]O[1]
2.2.2. Funcția VLOOKUP()
Funcția VLOOKUP() caută o valoare în prima coloană din stânga unui tabel, apoi redă valoarea aflată în celula de intersecție dintre rândul respectiv și o coloană dată. În prima coloană pot fi doar numere, text sau o valoare logică. Funcția nu poate deosebi literele majuscule de cele minuscule. Sintaxa funcției este (fig. 64.): =VLOOKUP(Lookup_value; Table_array; Col_index_num; Range_lookup) 80
Două țări, un scop, succes comun!
−
Valoarea de căutare Lookup_value poate fi orice valoare, referință sau șir de caractere.
−
În rubrica Table_array trebuie selectat domeniul în care se realizează căutarea.
−
La Col_index_num(numărul de ordine al coloanei) se înscrie acel număr care reprezintă valoarea locului ocupat în tabel. Dacă valoarea coloanei este 5, atunci obținem ca rezultat, valoarea înscrisă în coloana a 5-a a tabelului. În această parte nu putem înscrie număr de coloană mai mic decât 1, fiindcă în acest caz, sistemul dă mesajul de eroare #VALUE. Dacă valoarea introdusă este mai mare decât numărul de coloane al tabelului, mesajul de eroare va fi #REF.
−
În fereastra Range_lookup se poate înscrie o valoare logică pentru o precizie mai mare sau mai mică a căutării. Această listă de comenzi poate fi utilizată numai dacă prima coloană a bazei de date este aranjată în ordine crescătoare. Dacă introducem valoarea TRUE (Adevărat), atunci valoarea redată aproximează valoarea căutată. Aceasta înseamnă că în cazul în care nu găsește valoarea, funcția va reda în locul ei valoarea următoarecea mai mare, dar mai mică decât argumentul căutat. Dacă baza de date nu este aranjată după mărime, funcția va da un rezultat eronat.
Exemplu 18.: În aplicația următoare vom aplica funcția VLOOKUP() pentru căutarea datelor de vânzări ale agenților de vânzări (fig. 65.): 1.
Prima întrebare este: cât a fost totalul vânzărilor lui István ?
2.
A doua întrebare: cât a vândut în total, Pista?
81
Două țări, un scop, succes comun!
Fig. 64.: Argumentele funcției VLOOKUP()
Pentru obținerea răspunsului la prima întrebare, introducem criteriul de căutare în celula A8. Tabelul este domeniul A1:E6, totalurile se găsesc în coloana a cincea, deci Col_index_num=5. Nu putem accepta decât rezultat exact, de aceea în fereastra Range_lookup înscriem expresia logică FALSE. Astfel, funcția devine: =VLOOKUP((A8; A1:E6; 5; FALSE), iar rezultatul va fi 74415.
La a doua întrebare procedăm la fel, dar aici, criteriul de căutare se găsește în celula A9, iar restul parametrilor corespund. Ca rezultat obținem mesajul de eroare #N/A, fiindcă nu există agent de vânzări cu numele Pista.
82
Două țări, un scop, succes comun!
Fig. 65. Aplicație pentru utilizarea funcției VLOOKUP
2.2.3. Funcția de căutare HLOOKUP()
În denumirea funcției HLOOKUP(), litera H desemnează direcția orizontală (horizontal). Funcția caută un element în primul rând al unui bloc, apoi redă o valoare din coloana în care se află acest element, pe baza parametrilor dați. Utilizarea funcției seamănă în principiu cu aceea a funcției VLOOKUP(). Funcția nu recunoaște diferența între literele majuscule și minuscule.
Utilizarea funcției poate fi utilă în cazurile în care valorile comparate se găsesc în rândul de sus al blocului (tabelului) și dorim să aflăm o valoare aflată într-un rînd aflat mai jos. Sintaxa formulei este (fig. 66.): =HLOOKUP(Lookup_Value; Table_array; Row_index_num; Range_lookup).
83
Două țări, un scop, succes comun!
−
Câmpul valorii de căutare Lookup_value trebuie să conțină o valoare pe care funcția o caută în rândul de sus al tabelului. Conținutul celulei poate fi valoare, text sau referință.
Fig. 66.: Argumentele funcției HLOOKUP() −
În câmpul Table_array trebuie să fie identificat un bloc (desmnarea sau denumirea unui domeniu) în care se va efectua căutarea. Tabelul sau blocul selectat poate conține cap de tabel, numere, valori logice.
−
Câmpul Row_index_num trebuie să conțină numărul rândului din care așteptăm rezultatul. De exemplu, dacă introducem valoarea 3, funcția va reda valoarea din rândul al treilea al tabelului/blocului. Dacă înscriem un număr mai mare decât numărul de rânduri al tabelului selectat, funcția returnează mesajul de eroare #REF. Dacă înscriem o valoare mai mică decât 1, vom obține mesajul de eroare #VALUE.
−
Conținutul câmpului Range_lookup este o valoare logică, putând fi adevărată (TRUE) sau falsă (FALSE). Prin utilizarea acestora, căutarea
84
Două țări, un scop, succes comun!
poate fi exact sau aproximativă. Dacă valoarea este TRUE, atunci valoarea redată va fi aproximativă, ceea ce înseamnă că dacă funcția nu găsește o corespondență perfectă, atunci va da un rezultat mai mic decât argumentul căutat. În acest caz, elementele primului rând al tabelului selectat trebuie să fie așezate în ordine crescătoare. În orice altă situație, rezultatul funcției va fi eronat. Dacă valoarea domeniului este FALSE, atunci funcția caută corespondență exactă. Dacă nu există o astfel de corespondență, funcția redă un semnal de eroare (#N/A). Pentru utilizarea argumentului FALSE nu este necesară aranjarea în ordine a tabelului.
Exemplu 19.: În cele ce urmează vom prezenta posibilitatea de aplicare a funcției HLOOKUP() printr-un exemplu (fig. 67.). În tabel se găsesc datele anuale de vânzări ale unor agenți de vânzări. Vrem răspunsuri la următoarele întrebări: 1.
Cât este totalul vânzărilor pe anul 2002?
2.
Să creem o funcție cu ajutorul căreia să putem afla valoarea oricărei celule a bazei de date.
Răspunsul la prima întrebare este foarte simplu. Valoarea de căutare se găsește în celula A8. Ca domeniu de căutare selectăm întreg tabelul; rândul totalurilor este al 6-lea, acceptăm numai corespondență precisă, de aceea în câmpul Range_lookup înscriem valoarea logică FALSE. Funcția va deveni: =HLOKUP(A8;A1:E6;6;FALSE)
85
Două țări, un scop, succes comun!
Fig. 67.: Posibilitatea de utilizare a funcției HLOOKUP()
Pentru rezolvarea celei de a doua întrebări vom utiliza cele învățate anterior. În primul rând vom întocmi un mic tabel ajutător (domeniul A10:B11 în imagine), apoi, cu ajutorul comenzii de validare a datelor să creem liste verticale pentru ani în celula A11 și pentru nume în celula C11. Apoi putem întocmi funcția. Valoarea de căutare va fi celula A11, fiindcă aici se găsesc identificatoarele rândurilor. Domeniul (Table_array) este tabelul în întregime (A1:E6). Numărul rândului Row_index_num se calculează cu ajutorul funcției (MATCH() despre care se va vorbi mai pe larg în capitolul următor. Și aici se acceptă numai corespondență exactă, de aceea valoarea logică va fi FALSE. Funcția va fi: =HLOOKUP(A11; A1:E6; MATCH(B11; A1:A6; 0); FALSE)
După aceasta, tot ce avem de făcut este ca în celula A11 să selectăm perioada, în B11 să selectăm numele, iar în C11 putem vedea imediat rezultatul aferent criteriilor. Lista care se derulează în ferestrele verticale asigură căutarea numai a 86
Două țări, un scop, succes comun!
acelor elemente care există într-adevăr, astfel nu trebuie să ne așteptăm la mesajul de eroare #N/A.
2.2.4. Funcția MATCH()
Funcția MATCH() redă poziția unui element într-un bloc, corespunzătoare unei valori date într-un mod dat. Nici această funcție nu deosebește literele majuscule de cele minuscule. Sintaxa formulei este (fig. 68.): =MATCH(Lookup_value; Lookup_array; Match_type)
Fig. 68.: Argumentele funcției MATCH() •
Valoarea de căutare Lookup_value este acel număr, text, acea valoare logică sau referință la o astfel de valoare, al cărui/cărei loc îl căutăm în tabel. 87
Două țări, un scop, succes comun!
•
Lookup_array este o selecție coerentă (bloc) în care funcția caută valoarea căutată.
•
Câmpul Match_type nu trebuie completat în mod obligatoriu. Dacă nu se completează, funcția va lucra cu valoarea intrinsecă 1. Dacă valoarea este 1, atunci funcția va căuta valoarea egală sau cea mai mare valoare mai mică decât valoarea căutată. În acest caz, datele din baza de date trebuie să fie selectate în ordine crescătoare. Dacă valoarea este 0, atunci funcția va căuta valoarea care corespunde exact valorii de căutare. În acest caz nu se impune aranjarea după mărime a tabelului. Dacă valoarea căutată este text, atunci putem utiliza caracterele înlocuitoare * (stea) sau ? (semnul întrebării). Semnul * se utilizează atunci când la dreapta poziției date nu cunoaștem caracterele. Poate fi vorba despre orice număr de caractere necunoscute. Semnul ? poate înlocui un singur caracter. Dacă valoarea este -1, atunci funcția va reda valoarea egală cu cea căutată sau cea mai mică valoare mai mare decât valoarea căutată. Și aici, aranjarea după mărime este esențială. În cazul în care funcția nu găsește o valoare care corespunde valorii căutate, apare mesajul de eroare #N/A.
Exemplu 20.: Prezintă o problemă rezolvabilă cu ajutorul funcției MATCH(). (Fig. 69.) Întrebările la care se caută răspuns sunt: −
A câta este Ivett în lista de nume (domeniul (A2:A6)? o
−
88
Găsim o potrivire exactă pe locul 4.
Care este cea mai mare valoare, mai mică decât 15, în domeniul B2:B6?
Două țări, un scop, succes comun!
o
Dsatele nu sunt în ordine, de aceea vom obține mesaj de eroare #N/A
−
Care este valoarea egală cu 23 sau cea mai mare valoare mai mică decât 23, în domeniul B2:B6? o
Nu există 23, cel mai mic număr mai mare este 24, aflat în poziția 2.
Fig. 69.: Utilizarea funcției MATCH()
2.2.5. Funcția INDEX()
Funcția INDEX() redă ca rezultat, valoarea acelui element (tip referință sau bloc), pe care parametrii de rând sau de coloană îl definesc drept index. Deosebim două tipuri ale acestei funcții: forma relativă la blocuri și forma relativă la referințe. Funcția de tip referință redă o referință (adresă), pe când funcția tip bloc redă o valoare sau un bloc de valori. Tipul bloc redă ca rezultat, valoarea unei celule sau a unui bloc de celule date. Tipul referință redă adresa 89
Două țări, un scop, succes comun!
celulei date. Alegem argumentul în funcție de ceea ce dorim să obținem ca rezultat (fig. 70.).
Fig. 70.: Alternativele de utilizare ale funcției Index()
Sintaxa formulei aferente funcției tip bloc (fig. 71.): =INDEX(array; row_num; column_num).
Fig. 71.: Argumentele funcției INDEX() de tip bloc (array)
90
Două țări, un scop, succes comun!
•
Argumentul array va fi o selecție de celule din care dorim să obținem data căutată.
•
În câmpul row_num se va înscrie numărul blocului din care dorim să obținem valoarea. Dacă nu introducem această valoare, este obligatorie introducerea numărului coloanei.
•
Introducerea datelor în câmpul column_num este obligatorie numai dacă nu introducem date în câmpul row_num. Aici vom introduce numărul coloanei din care dorim să obținem valoarea căutată.
Dacă introducem atât numărul rândului cât și numărul coloanei într-o funcție tip bloc, vom obține ca rezultat, valoarea din celula de intersecție a rândului și coloanei rerspective. Dacă nu dăm un parametru, rezultatul funcției va deveni #REF! pentru lipsa numărului coloanei sau #VALUE! Pentru lipsa numărului rândului. Dacă după identificarea blocului introducem o valoare pentru numărul rândului sau numărul coloanei care nu figurează în bloc, valoarea obținută va fi tot #REF!.
Fig. 72.: Aplicații ale funcției INDEX() tip bloc 91
Două țări, un scop, succes comun!
Pentru forma cu referință, sintaxa formulei este: =INDEX(reference; row_ num; column_num; Area_num) •
Câmpul Reference este format dintr-una sau mai multe zone de celule. În cazul în care zona constă doar într-un rând sau într-o coloană, se poate renunța la argumentul rândului sau coloanei. Dacă zona de celule constă în mai multe celule independente, atunci între diferitele referințe se vor insera paranteze rotunde (fig. 73.).
Fig. 73.: Argumentele funcției INDEX() de tip referință •
În câmpul Row_num se va introduce numărul rândului din care dorim să obținem valoarea. Dacă această valoare nu este dată, trebuie dat obligatoriu, numărul coloanei. Dacă valoarea dată este zero, atunci funcția redă ca rezultat, întreaga coloană.
92
Două țări, un scop, succes comun!
•
În câmpul Column_num se va înscrie numărul coloanei din care așteptăm rezultatul. Dacă valoarea înscrisă ezte 0, atunci funcția se va referi la întregul rând. Dacă înscriem valori din afara referinței la argumentele rând sau coloană, rezultatul funcției va deveni #REF!
•
În câmpul Area_num trebuie înscrisă acea parte a referinței din care dorim să obținem rezultatul prin utilizarea funcției. Dacă nu introducem o valoare, funcția va utiliza configurația 1. Dacă nu scriem nimic nici la numărul rândului, nici la numărul coloanei, rezultatul funcției va fi chiar zona de referință.
Exemplu 21.: Fig. 74. prezintă o aplicație posibilă a a funcției INDEX() de tip referință.
Întrucât avem o singură bază de date, atunci când ne referim la zona de date numărul 2, funcția va reda rezultatul de eroare #REF!.
Fig. 74.: Posibilități de aplicare a funcției INDEX() de tip referință
93
Două țări, un scop, succes comun!
2.2.6. Funcția INDIRECT()
Funcția INDIRECT() redă valoarea unei referințe formulate asupra altei celule cu ajutorul unui text. Valoarea de referință poate fi un număr, dar și un text. Utilizarea funcției este recomandată când dorim redarea valorii unei celule la care se face o referință indirectă. Sintaxa formulei funcției este (fig. 75.): =INDIRECT(Ref_text; A1) •
Câmpul Ref_text trebuie să conțină o referință asupra unei celule care la rândul ei este o referință tip A1 sau R1C1. Valoarea celulei poate conține o denumire sau un text care definește o referință. Completarea câmpului este obligatorie.
•
Câmpul A1 poate conține o valoare logică. Completarea acestuia nu este obligatorie. Dacă valoarea logică este ”adevărat” (true), atunci referirea este de tip A1, iar dacă este ”fals” (false) atunci referința este de tip R1C1.
Fig. 75.: Argumentele funcției INDIREKT() 94
Două țări, un scop, succes comun!
Exemplu 22.: Avem o listă de nume, aranjată în ordinea descrescătoare a vârstei. Dorim să știm cine este persoana care are exact 23 de ani sau dacă nu există, cine este persoana mai în vârstă, cu vârsta cea mai apropiată de 23 de ani (fig. 76.).
Pentru rezolvare vom utiliza împreună funcțiile Match(), Indirect() și operatorul de îmbinare a textelor &: =INDIRECT(F&MATCH(F8; G1:G6; -1))
Intenția noastră este să selectăm numele potrivit din domeniul F2:F6. Știm că rezultatul se află în coloana F, dar nu știm al câtelea element al coloanei este. Numărul de ordine al elementului îl aflăm cu ajutorul funcției MATCH() în domeniul G1:G6, adică: MATCH(F8; G1:G6; -1), unde rezultatul funcției este 3.
Fig. 76.: Aplicarea funcției INDIRECT()
95
Două țări, un scop, succes comun!
Cu ajutorul operatorului & corelăm valorile F și 3, iar cu ajutorul funcției INDIRECT() obținem conținutul celulei F3.
2.2.7. Funcția LOOKUP()
Funcția LOOKUP() caută valoarea dorită într-un bloc de date sau într-un vector. În consecință funcția va avea două tipuri: bloc și vectorială.
În cazul căutării într-un bloc, funcția caută o valoare în primul rând sau în prima coloană a unui tabel sau a unei părți de tabel (bloc), apoi, după găsirea acesteia, returnează ultimul element al rândului sau coloanei respective. Se utilizează când trebuie să căutăm în liste scurte de valori, iar valorile sunt constante. Aplicarea acestei forme a funcției LOOKUP() este recomandată când valorile căutate se găsesc în primul rând sau în prima coloană a blocului dat.
Numim căutare în vector, procedeul când funcția caută ultima apariție a unei valori într-un vector și apoi redă valoarea aflată în aceeași poziție într-un alt vector. Acest lucru se utilizează când se caută în liste lungi de valori, iar valorile se modifică după un anumit timp. Aplicarea acestei forme a funcției VLOOKUP() este recomandată când vrem să dăm numărul rândului sau coloanei din dreptul valorii căutate.
96
Două țări, un scop, succes comun!
Este mai oportună utilizarea funcției HLOOKUP() sau VLOOKUP() în locul funcției LOOKUP(). Funcția nu face diferența între literele majuscule și minuscule.
Sintaxa funcției LOOKUP() de tip bloc (fig. 77..): =LOOKUP(Lookup_value; Array)
Fig. 77.: Argumentele funcției LOOKUP() de tip bloc
•
În câmpul Lookup_value se înscrie valoarea căutată de funcție în blocul de date. Aceasta poate fi un număr, un text, o valoare logică, denumire, nume sau referință. În câmpul Array trebuie localizat un bloc ale cărui valori sunt aranjate în ordine crescătoare (0,1,2,3,…; A,B,C,…; FALSE, TRUE). Dacă baza de date nu este aranjată în ordine, nu vom obține un rezultat exact. Elementele pot fi numere, texte, valori logice, denumiri, nume, respectiv
97
Două țări, un scop, succes comun!
referințe. Precizarea blocului este obligatorie. Blocul marcat poate fi denumit blocul care trebuie comparat cu valoarea căutată. Dacă funcția nu găsește valoarea căutată, va reda elementul cel mai mare care încă este mai mic decât cel căutat.
Rezultatul funcției va fi #N/A, dacă valoarea căutată este mai mică decât cea mai mică valoare existentă în primul rând, respectiv în prima coloană.
Exemplu 23.: pentru căutarea în bloc. (fig. 78.)
Forma vectorială a funcției LOOKUP() va căuta o valoare în domeniul format dintr-un rând sau dintr-o coloană (vector) și va reda ca rezultat, valoarea elementului aflat în aceeași poziție pe un alt vector. Utilizarea este recomandată când dorim să precizăm domeniul care conține valorile rezultatelor.
Sintaxa formulei funcției de căutare LOOKUP() de tip vectorial (fig. 79.): =LOOKUP(Lookup_value; Lookup_vector; Result_vector) •
La argumentul Lookup_value se înscrie acea valoare pe care funcția de căutare o va căuta în primul vector. Valoarea poate fi număr, text, valoare logică, respectiv denumire sau referință relativă launul dintre acestea.
•
Câmpul Lookup_Vector trebuie completat. Înaintea precizării domeniului, valorile trebuie aranjate în ordine crescătoare. În caz contrar, rezultatul calculelor va fi inexact. Domeniul desemnat poate fi un singur rând sau o singură coloană. Valorile acestuia pot fi atât text, cât și numere sau valori
98
Două țări, un scop, succes comun!
logice. Funcția nu recunoaște diferența dintre literele majuscule și cele minuscule.
Fig. 78.: Aplicațiile funcției LOOKUP() de tip bloc •
Precizarea vectorului rezultatelor Result_vector nu este obligatorie. Întrucât vectorul înseamnă un domeniu format dintr-un singur rând sau o singură coloană, rezultă că și ca vector al rezultatelor poate fi desemnat tot un domeniu format dintr-un rând sau dintr-o coloană. Mărimea vectorului de căutare trebuie să corespundă cu mărimea vectorului rezultatelor.
Dacă funcția LOOKUP() nu găsește rezultatul căutat, va reda ca rezultat, cea mai mare valoare de pe vectorul de căutare Lookup_vector care este mai mică 99
Două țări, un scop, succes comun!
decât valoarea de căutre Lookup_value. Dacă valoarea noastră de căutare este mai mică decât valorile de pe vectorul de căutare, atunci rezultatul redat de funcția de căutare va fi mesajul de eroare #N/A.
Fig. 79.: Argumentele funcției LOOKUP() de tip vector
Exemplu 24.: aplicație a vectorului LOOKUP() de tip vector. (fig. 80.)
2.2.8. Funcția GETPIVOTDATA()
Funcția GETPIVOTDATA()redă datele stocate într-un tabel centralizator. În cazul în care tabelul cuprinde și totalul, funcția se va utiliza la găsireaunui total al tabelului. Sintaxa funcției (fig. 81.):
100
Două țări, un scop, succes comun!
Fig. 80. Utilizarea funcției de căutare LOOKUP() de tip vector
Fig. 81.: Fereastra funcției GETPIVOTDATA()
=GETPIVOTDATA(Data_field; Pivot_table) 101
Două țări, un scop, succes comun!
•
Precizarea câmpului de date Data_field este obligatorie. În acest caz se marchează acel domeniu din care dorim să obținem datele.
•
La fel, câmpul referitor la tabelul centralizator, Pivot_table trebuie completat. Putem să ne referim opțional la anumite celule sau domenii de celule ale tabelului centralizator. Astfel stabilim, care este data pe care dorim s-o regăsim.
•
Completarea câmpurilor Field1, Item1, Field2, Item2... (care apar pe rând la completarea câmpului Pivot_table, n.trad) nu este obligatorie. Într-o funcție se pot introduce maximum 126 de perechi de date referitoare la câmpuri și elemente (Field, Item), care descriu datele pe care le dorim redate. Ordinea perechilor de date este opțională. Denumirile câmpurilor și ale elementelor (nu valori numerice sau date calendaristice) se așează între ghilimele. Dacă argumentul câmp și element descrie o singură celulă, rezultatul returnat de funcție este chiar conținutul celulei, indiferent dacă acesta este un șir de caractere, număr, mesaj de eroare sau orice altceva.
În cazul în care domeniul selectat conține mai mult de un tabel centralizator, atunci datele redate de funcție vor proveni din tabelul întocmit cel mai recent.
Funcția GETPIVOTDATA() redă ca rezultat, mesajul de eroare #REF! dacă domeniul selectat nu conține tabele centralizatoare sau dacă parametrii dați descriu un câmp ascuns (invizibil) sau dacă au în componență, filtre în care datele filtrate nu apar.
Exemplu 25.:Fig. 82.: Aplicație a funcțției GETPIVOTDATA(). (fig. 82.) 102
Două țări, un scop, succes comun!
Fig. 82.: Aplicație a funcției GETPIVOTDATA()
2.2.9. Funcțiile COLUMN() și COLUMNS()
Funcția COLUMN() redă numărul coloanei la care se referă argumentul. Sintaxa funcției este (fig. 83.): =COLUMN(Reference) •
Completarea câmpului Reference nu este obligatorie. Trebuie marcate acea celulă sau domeniu de celule al căror număr de coloane vrem să-l aflăm. Dacă nu precizăm nicio referință (Reference), atunci Excel redă implicit referința celulei în care se găsește funcția. Nu este posibilă referința multiplă. Funcția nu se poate referi la mai multe domenii deodată. 103
Două țări, un scop, succes comun!
Fig. 83. Argumentul funcției COLUMN
Exemplu 26.: Este prezentată aplicarea funcției COLUMN(). Sunt date rezultatele la examen pentru 4 elevi. Să se determine diferitele numere de coloană cu ajutorul funcției COLUMN(). (fig. 84.)
Fig. 84.: Aplicațiile funcției COLUMN()
104
Două țări, un scop, succes comun!
Funcția COLUMNS() redă numerele coloanelor dintr-o referință sau dintr-un bloc de celule. Referința la blocuri se utilizează când o formulă trebuie să redea mai multe rezultate, respectiv dacă funcția lucrează cu argumente aranjate în rânduri sau coloane. Sintaxa funcției este: =COLUMNS(Array) •
Completarea câmpului bloc (Array) este obligatorie (fig. 85.). Valoarea acestuia furnizează informații despre operații, evenimente, metodă, caracteristici, funcție sau procedură. Este posibilă referirea la blocuri, formule tip bloc, respectiv la un domeniu de celule pentru care se dorește stabilirea numărului celulelor. Formula tip bloc este o formulă careefectuează mai multe operații pe un set sau mai multe seturi de valori, apoi redă unul sau mai multe rezultate.Formulele tip bloc se scriu între acolade ({ }).
Fig. 85. Argumentul funcției COLUMNS()
105
Două țări, un scop, succes comun!
Exemplu 27.: prezentăm modul de utilizare al funcției COLUMNS(). Se dau rezultatele la examen pentru 4 elevi. Să se determine numerele diferitelor coloane cu ajutorul funcției COLUMNS(). (fig. 86.)
Fig. 86.: Aplicațiile funcției COLUMNS()
2.2.10. Funcțiile ROW() și ROWS()
Funcția ROW() (rând) redă ca rezultat, numărul rândului de referință. Sintaxa funcției este (fig. 87.): =ROW(Reference)
Completarea câmpului Reference nu este obligatorie.
Funcția ROWS() redă numărul rândurilor referinței sau blocului. Sintaxa funcției este =ROWS(Array) 106
Două țări, un scop, succes comun!
În câmpul Array (bloc) se introduc: acel bloc, formulă bloc, domeniu de celule ale căror numere de rând ne interesează.
Fig. 87.: Argumentele funcțiilor ROW() și ROWS()
Exemplu 28.: Fig. 88. prezintă posibilitățile de utilizare ale funcțiilor ROW() și ROWS().
Ca rezultat al funcției se obține numărul suprafețelor de referință, atât în cazul selecției unice, cât și al celei multiple.
107
Două țări, un scop, succes comun!
Fig. 88.: Aplicații ale funcțiilor ROW() și ROWS()
2.2.11. Funcția AREAS()
Funcția AREAS() redă numărul suprafețelor dintr-o referință. Aceasta poate fi o singură celulă sau un domeniu coerent de celule. Sintaxa funcției este (fig. 89.): = AREAS(Reference) •
Completarea câmpului Reference (referință) este obligatorie. Aceasta înseamnă referința la o celulă sau la un domeniu de celule. Referința poate fi multiplă. Dacă dorim să introducem mai multe câmpuri separate într-o formulă, atunci trebuie folosite paranteze duble, întrucât, aici, Excel nu va interpreta punctul cu virgulă ca fiind separator de câmpuri.
108
Două țări, un scop, succes comun!
Fig. 89.: Argumentul funcției AREAS()
În fig. 90. se poate urmări aplicarea funcției AREAS()și se constată că pot fi introduse una sau mai multe referințe.
Fig. 90.: Aplicații ale funcției AREAS()
109
Două țări, un scop, succes comun!
2.2.12. Funcția TRANSPOSE()
Funcția TRANSPOSE() redă transpusa unei matrici (transformă liniile în coloane și viceversa). Primul rând al matricei noi va fi prima coloană a blocului inițial. Sintaxa funcției este: =TRANSPOSE(Array)
În câmpul Array se va desemna matricea ale cărei rânduri și coloane dorim să le schimbăm între ele. (fig. 91.)
Fig. 91.: Argumentele funcției TRANSPOSE()
În cele ce urmează se va prezenta printr-o aplicație, modul în care se transpun rândurile și coloanele unei matrici cu 4 rânduri și 3 coloane. (fig. 92.)
Cu ajutorul funcției TRANSPOSE(), domeniile de celule verticale devin orizontale, iar cele orizontale devin verticale. Funcția trebuie introdusă ca formulă bloc într-un domeniu care are tot atâtea linii și coloane câte are 110
Două țări, un scop, succes comun!
domeniul de origine (domeniu: două sau mai multe celule pe o foaie). Formulele bloc se înscriu între paranteze acolade ({ }).
Fig. 92.: Aplicarea funcției TRANSPOSE()
2.2.13. Funcția CHOOSE()
Funcția CHOOSE() alege o valoare dată dintr-o listă de argumente de maximum 256 de elemente (value1;...value254). Dintre argumentelede valoare, funcția îl va reda pe cel care are numărul de ordine al indexului.Sintaxa funcției este (fig. 94.): = CHOOSE(Index; value1; ... value 254) •
Completarea câmpului
Index este obligatorie. Câmpul stabilește
argumentul ales. Tipul câmpului poate fi un număr sau o formulă. Dacă va conține un număr, acesta poate lua orice valoare între 1 și 254. Dacă indexul este 1, atunci rezultatul funcției va fi argumentul Value1, dacă indexul este 2, rezultatul va fi argumentul e value 2 etc. 111
Două țări, un scop, succes comun!
Valoarea funcției pentru index mai mic decât 1 sau mai mare decât numărul argumentelor de valoare va reda rezultatul #VALUE! (mesaj de eroare). Dacă indexul este o formulă, programul va calcula funcția respectivă. •
Din câmpurile Value1 ... Value254, doar Value1 trebuie introdus în mod obligatoriu, restul valorilor se introduc opțional. Conțiuntul câmpului poate fi număr, referință de celulă, nume, formulă, funcție, text. Funcția va alege din lista dată, în funcție de index, valoarea corespunzătoare.
Fig. 93.: Argumentele funcției CHOOSE()
Exemplu 31.: În aplicația noastră vom alege informația dorită din datele a patru elevi, aflate în index.
112
Două țări, un scop, succes comun!
Dacă indexul nu are valoare întreagă, rezultatul va fi mesajul de eroare #VALUE!. Totuși în astfel de cazuri există posibilitatea de a utiliza funcții de rotunjire ROUND(), ROUNDOWN(), ROUNDUP().
Fig. 94.: Aplicațiile funcției CHOOSE()
2.3. Aranjarea datelor
În activitatea de zi cu zi este necesară adesea, rearanjarea datelor dintr-un tabel, pe baza unor criterii. În aceste situații trebuie să avem grijă să selectăm nu doar coloana pe care vrem să o aranjăm în ordine, ci întreaga bază de date coerentă. Aranjarea datelor este accesibilă din mai multe locuri. Cel mai simplu este din câmpul EDIT DATA al benzii de meniu HOME (fig. 95.), dar se poate accesa, de asemenea, din câmpul SORT&FILTER al benzii de meniu DATA (fig. 96.)
113
Două țări, un scop, succes comun!
sau, după activarea filtrării (FILTER)
, făcând clic pe lista de câmpuri care se
deschide în jos (fig. 97.)
Fig. 95.: Accesarea aranjării datelor din banda de meniu HOME
Fig. 96.: Accesarea aranjării datelor din banda de meniu DATA
Prin clic pe icon-ul Sort A to Z (Sortare de la A la Z) sau Sort Z to A (Sortare de la Z la A), aranjarea în ordine crescătoare sau descrescătoare se va efectua în coloana în care ne aflăm. Acesta este un procedeu rapid, dar în cazul tabelelor mari sau dacă lipsesc nume de câmpuri, nu este sigur că întregul tabel a fost inclus în aranjare, ceea ce poate duce la amestecarea datelor. Este mult mai practică selectarea întregului tabel și apoi utilizarea Custom Sort sau a iconiței.
114
Două țări, un scop, succes comun!
Astfel pe de o parte se poate verifica dacă este selectat fiecare câmp, pe de altă parte avem posibilitatea aranjării pe mai multe nivele (fig. 98.).
Fig. 97.: Aranjarea datelor prin utilizarea filtrului (Filter)
Exemplu 32.: Aranjare pe mai multe nivele. Fig. 99. prezintă vânzările diferitelor magazine. Am efectuat aranjarea mai întâi după județe, apoi după localități.
115
Două țări, un scop, succes comun!
Fig. 98.: Fereastra de aranjare Custom Sort
Fig. 99.: Exemplu de aranjare pe mai multe nivele
116
Două țări, un scop, succes comun!
2.4. Filtrarea datelor
Prin filtrare, în tabel rămân numai date care corespund unui anumit criteriu, iar restul vor fi ascunse. Acest lucru este practic fiindcă rândurile selectate prin filtrare fac tabelul mai comprehensiv, eventualele greșeli pot fi corectate mai ușor, iar cu datele filtrate pot fi efectuate însumări și diferite alte operații. Pentru filtrarea datelor este necesar un fragment de tabel care corespunde cerințelor tabelului tip bază de date (listă). În cazul datelor așezate nestructurat pe foaia de lucru sau al celor aranjate orizontal, filtrarea nu este posibilă. De asemenea este important ca în rândul de sus să existe un identificator referitor la conținutul coloanei (tabelele de tip bază de date au fost descrise amănunțit la capitolul 1.2.).
Înaintea filtrării putem efectua formatarea tabelului – pentru aceasta selectăm domeniul de celule care urmează a fi formatat, apoi din banda de meniu HOME selectăm STYLES – Format as Tableși selectăm formatul dorit, astfel se ajustează automat capetele de tabel și se activează filtrele.
Putem efectua filtrarea și fără formatarea tabelului. În acest caz pur și simplu selectăm porțiunea de tabel a cărei date trebuie filtrate, apoi selectăm HOME – EDITING – Sort&Filter–Filter. Altă cale este: din banda DATAiconițaFilter. Ca urmare a selectării funcțiunii,în rândul de sus al coloanelor, lângă identificatori apar săgeți de derulare.
117
Două țări, un scop, succes comun!
Mai departe în acest capitol vom trece în revistă mai amănunțit, posibilitățile de filtrare.
2.4.1. Utilizarea filtrării automate
Cu ajutorul filtrării automate putem căuta simplu și ușor printre datele unui domeniu de celule sau ale unei
părți de tabel și putem manevra datele
respective.
Pentru filtrarea în baza de date putem folosi comanda Filter din banda de meniu DATA sau din banda de meniu HOME, EDITING, Sort & Filter, butonul Filter. Cu ajutorul acestui buton poate fi activată filtrarea sau, dimpotrivă, poate fi revocată opțiunea de filtrare. O dată cu activarea filtrării, lângă fiecare titlu de coloană din selecție apare butonul unei liste de derulare.
Exemplu 33.: Pentru prezentarea elementului de meniu Filtrare vom efectua o aplicație practică. Datele participanților la o tabără (tabelul 16.)
Dorim să filtrăm datele în funcție de vârstă. După deschiderea filtrului apar posibilitățile de filtrare. (fig. 100.)
În partea inferioară a meniului putem alege valorile apărute în coloană pe care dorim să le vedem. În dreptul valorilor car ne interesează, bifăm dreptunghiul de selectare, iar în fața valorilor pe care nu dorim să le vedem, lăsăm dreptunghiul de selectare gol (nebifat). 118
Două țări, un scop, succes comun!
Tabelul 6.: Datele participanților la o tabără
Fig. 100.: Părțile meniului de filtrare 119
Două țări, un scop, succes comun!
Făcând clic pe opțiunea Number Filters, în funcție de tipul datelor conținute de celulă, vom putea alege dintre filtre numerice, filtre de text sau filtre de date calendaristice (fig. 101.).
Filtre numerice
Filtre de text
Filtre de date calendaristice
Fig. 101.: Tipuri de filtrare
Din meniul Custom Sort se poate activa fereastra AutoSort. Cu ajutorul acestuia pot fi prevăzute și condiții ceva mai complicate. Este utilă folosirea caracterelor * și ? în cazul sortărilor pe texte unde cunoaștem doar unii parametri ficși ai textului de căutat. Cu elementul de meniu Clear se poate șterge filtrarea. Prin restaurarea filtrării (Reapply) putem reveni la tabelul inițial fără pierderi de date. 120
Două țări, un scop, succes comun!
2.4.2. Filtrarea specială sau complexă (filtrare dirijată)
Dacă vrem să efectuăm filtrări după criterii multiple în baza de date, nu e sigur că vom reuși cu autofiltrarea. În aceste cazuri este indicată utilizarea filtrării dirijate.
Pentru aceastaintroducem condițiile într-un tabel de condiții (domeniu de criterii).
Subpunctul filtrare specială se vizualizează cu ajutorul șirului de comenzi DATA – SORT&FILTER - Advanced. Înaintea fitrării trebuie stabilit așa numitul domeniu de filtrare, care trebuie să figureze într-un domeniu separat de tabel. Domeniul de filtrare trebuie să conțină cel puțin dpuă celule suprapuse. Primul rând al domeniului de filtrare va conține denumirile câmpurilor de filtrat, iar în celelalte rânduri se vor da semnul de relație al condiției de filtrare și partea dreaptă a relației. Partea stângă a unei relații este, de fapt, numele câmpului scris în primul rând. În celula de sub denumirea câmpului se înscrie semnul de relație și partea dreaptă a relației. Putem da un număr arbitrar de relații referitoare la un câmp, dar în aceste cazuri, în celulele de sub primul rînd se înscriu doar semnul de relație și partea dreaptă a relației. În cazul mai multor relații, programul leagă rândurile cu relația logică ”sau”, iar coloanele, cu relația logică ”și”.
În cazul condiției referitoare la un text, dacă nu scriem nimic înaintra cuvântului, sistemul va presupune egalitatea (=). Nu este obligatorie înscrierea 121
Două țări, un scop, succes comun!
semnului =, dar dacă se înscrie, atunci textele trebuie puse în ghilimele duble. De exemplu, cuvântul măr înseamnă că sistemul va vizualiza toate cuvintele care încep cu măr. Este similar cu înscrierea în celulă a cuvântului măr fără ghilimele. În cazul numerelor, pe lângă egalitate putem utiliza semnele de relație ≤, ≥, <, >, <>.
În cazul unui text, dacă ne amintim numai de o parte a cuvântului căutat, putem utiliza semnele* sau ?. Semnul * poate însemna un șir de caractere de orice lungime, pe când ? poate înlocui un singur caracter. În cadrul unei condiții, caracterele înlocuitoare pot fi utilizate de mai multe ori. Nu se poate prestabili diferența între literele majuscule și cele minuscule. Cele de mai sus sunt ilustrate în tabelul 17.
Exemplu 34.: Filtrarea dirijată. Avem un tabel referitor la 10 persoane, unde sunt date numele, vârsta și sexul persoanelor. Dorim să extragem numele persoanelor ale căror nume încep cu Z și sunt bărbați sau persoanele cu vârsta peste 20 de ani. Deschidem meniul Advanced din banda DATA. Domeniul de tabel List range înseamnă datele propriu-zise ale tabelului ($A$2:$C$10), pe când domeniul de filtrare Criteria Range este partea de tabel în care au fost precizate condițiile ($A$13:$C$15). Domeniile apar ca adrese (referințe) absolute. Expresia logică a condiției este: =stânga(nume,1)=z și sex=masculin sau vârsta>20. Această expresie este corectă doar din punct de vedere logic, practic în Excel nu funcționează.
122
Două țări, un scop, succes comun!
Tabelul 17.: Căutare specială într-o bază de date Cuvântul căutat Stundetele cu nume Sára Nume care se încep cu litera ”S” Nume care se termină cu litere ”S” Nume în care este o literă ”S” Nume în care se află combinația ”SZ” Nume în care a 3-a litetă este K Nume în vare a 2-a literă este ”A” și se mai găsește un ”O”
Caractere Sára =S* =*S =*S* =*SZ* =??K* =?A*O*
Aplicația poate fi rezolvată pe baza celor prezentate în panoul filtrare dirijată (Advanced) din fig. Se recomandă ca înaintea deschiderii panoului Advanced, cursorul mouse-ului să fie poziționat în interiorul domeniului de date, astfel sistemul oferă automat acest domeniu în câmpul List range.
Domeniul de filtrare Criteria range conține condițiile stabilite; este indicat ca acestea să fie selectate cu mouse-ul după ce am făcut clic în câmpul de introducere. Putem stabili locul datelor filtrate. În cazul filtrării pe loc, (Filter the list, in place), rezultatele se înscriu în interiorul tabelului de bază, pe când în cazul copierii în alt loc (Copy to another location) baza de date filtrată va fi așezată într-un loc prestabilit. Dacă locul prevăzut este prea mic pentru extragere, programul întreabă dacă poate șterge restul rândurilor de sub spațiul prevăzut. Dacă nici așa nu este suficient spațiu, atunci se impune efectuarea de filtrări suplimentare în baza de date. În exemplul nostru am utilizat opțiunea Copiere în alt loc ($H$2:$J$2). Selectarea opțiunii Unique records only (doar înregistrările unice), aflată în partea de jos a ferestrei este indicată numai dacă în cadrul bazei de date se găsesc mai multe rânduri identice, din care dorim să vizualizăm doar unul. Se activează prin bifarea dreptunghiului de activare din 123
Două țări, un scop, succes comun!
fața textului. Întrucât în exemplul nostru nu există rânduri identice, nu vom utiliza această opțiune.
Fig. 102. Exemplu practic de utilizare a filtrării dirijate Rezultatul final al operațiunii se poate vedea în tabelul intitulat Tabelul obținut, unde baza de date apare cu cap de tabel.
2.5. Funcții aferente bazelor de date
În capitolul anterior a fost abordată filtrarea bazelor de date. Cu ajutorul filtrării dirijate pot fi extrase elemente ale bazei de date pe baza unor criterii complexe, unice. Totuși se întâmplă adesea că nu avem nevoie de baza de date filtrată, ci de o valoare calculată din ea, o medie, numărul de elemente, dispersia etc. În astfel de cazuri, funcțiile bazelor de date sunt de mare ajutor fiindcă putem realiza cu ajutorul lor, extrageri complicate, multicriteriale.
124
Două țări, un scop, succes comun!
În Excel există 12 funcții ale bazelor de date. Putem introduce funcțiile bazelor de date din meniul cu butoane PAGINA DE PORNIRE – EDITARE – butonul ∑ - mai multe funcții – inserare funcție (HOME – EDITING – butonul ∑ - More Functions (fig. 103.), cu comanda Insert Function (fig. 104.) sau prin introducerea formulei cu tastatura.
Fig. 103.: Introducerea funcției de bază de date din câmpul Editare al paginii de pornire
În ambele cazuri apare fereastra de dialog Introducerea funcției (Insert function), în care, la categoria Database (baze de date) găsim aceste funcții. Toate funcțiile referitoare la bazele de date au trei argumente (fig. 105): −
Database (baza de date) Înțelegem prin bază de date, lista ordonată de date corelate, așezate în rânduri (înregistrări) și coloane (câmpuri). Primul rând al listei conține denumirile
coloanelor.
Rândurile
domeniului
selectat
constituie
înregistrările bazei de date.
125
Două țări, un scop, succes comun!
Fig. 104.: Introducerea funcției din meniul Editare
Fig. 105.: Argumentele funcțiilor tip bază de date −
Câmp Arată care sunt câmpurile utilizate în funcție. Câmpul se poate introduce cu denumirea pusă între ghilimele (ex. vârsta, venit etc.) sau ca număr al
126
Două țări, un scop, succes comun!
câmpului (fără ghilimele, ex. 1 pentru primul câmp, 2 pentru al doilea etc.). −
Criteriu Este acel domeniu al celulelor care conține condițiile date. Argumentul criteriu poate fi orice domeniu, dacă acesta conține cel puțin un titlu de coloană și o celulă goală dedesubt. Criteriul poate fi introdus și ca referință la o celulă (adresă), bunăoară în exemplul din fig. 106. este domeniul A1:H4; sau poate fi dat printr-o denumire atribuită domeniului, dar așa cum s-a arătat mai sus, trebuie să mai conțină cel puțin o celulă goală.
Exemplu 35.: Pentruidentificarea mai simplă, baza de date o vom denumi Date. (fig. 106.)
Acest lucru îl realizăm în banda de meniu FORMULAS, selectând din câmpul DEFINED NAMES, comanda Define Name (fig. 107.).
Fig. 108. prezintă fereastra New name (nume nou). Înscriem denumirea dorită în câmpul Name (nume), în cazul nostru, ”Date” stabilim raza de acțiune (Scope), putem face precizări legate de nume, iar apoi selectăm domeniul datelor: A6:H26.
Corespunzător celor descrise putem stabili denumirea de Criteriu pentru domeniul criteriilor, deși nu are prea mult sens, fiindcă dimensiunile acestuia se pot modifica în funcție de întrebările formulate.
127
Două țări, un scop, succes comun!
Fig. 106.: Domeniu de filtrare și domeniu de date
Fig. 107. Atribuirea unei denumiri
128
Două țări, un scop, succes comun!
Fig. 108.: Introducerea unui nume nou În cele ce urmează să vedem ce posibilități de selecție și de analiză avem la dispoziție prin utilizarea funcțiilor aferente bazelor de date. −
DAVERAGE() Redă media acelor valori aflate în câmpul (coloana) înregistrărilor unei baze de date care corespund criteriilor date.
−
DCOUNT() Numără în câmpul înregistrărilor (coloana) unei liste sau baze de date, acele celule care corespund unor criterii date. Nu este obligatorie introducerea argumentului câmpului. Dacă nu dăm valoarea câmpului, funcția DCOUNT() va reda numărul înregistrărilor corespunzătoare criteriilor date din întreaga bază de date.
−
DCOUNTA() Numără, în câmpul înregistrărilor unei liste sau al unei baze de date, acele celule nonblanc (care nu sunt goale), care corespund criteriilor date.
129
Două țări, un scop, succes comun!
Nu este obligatorie introducerea argumentului câmpului. Dacă nu dăm valoarea câmpului, funcția DCOUNTA() va reda numărul înregistrărilor corespunzătoare criteriilor date din întreaga bază de date. −
DGET() Extrage o singură valoare din baza de date. Se utilizează pentru a selecta un câmp al unei înregistrări a bazei de date, care corespunde unui criteriu dat. Dacă nicio valoare nu corespunde criteriului dat, funcția returnează mesajul de eroare #VALUE!. Dacă există mai multe valori care corespund criteriului, mesajul de eroare returnat de funcție va fi #N/A!.
−
DMAX() Într-un câmp (coloană) al înregistrărilor unei liste sau unei baze de date caută și redă valoarea cea mai mare care corespunde criteriilor date.
−
DMIN() Într-un câmp (coloană) al înregistrărilor unei liste sau unei baze de date caută și redă cea mai mică valoare care corespunde criteriilor date.
−
DPRODUCT() Redă produsul acelor valori dintr-un câmp (coloană) al înregistrărilor unei liste sau unei baze de date, care corespund criteriilor date.
−
DSTDEV() Estimează dispersia standard a mulțimii pe baza unui eșantion format din numere aflate într-un câmp de înregistrări (coloană) al unei liste sau baze de date care corespund criteriilor date.
130
Două țări, un scop, succes comun!
−
DSTEDVP() Calculează dispersia mulțimii din câmpul de înregistrărial unei liste sau baze de date (coloană), pe baza mulțimii numerelor aflate în acesta care corespund criteriilor date.
−
DSUM() Redă ca rezultat, suma acelor numere aflate într-un câmp de înregistrări al unei liste sau baze de date (coloană), care corespund unui criteriu dat.
−
DVAR() Estimează varianța (pătratul dispersiei) mulțimii pe baza unui eșantion dintr-un câmp de înregistrări (coloană) al unei liste sau baze de date, care corespund unor criterii date.
−
DVARP() Calculează varianța mulțimii pe baza mulțimii numerelor aflate într-un câmp de înregistrări (coloană) aferent unei liste sau baze de date, care corespund criteriilor date.
2.6. Aplicațiile funcțiilor aferente bazelor de date
Vom analiza domeniul Date din fig. 106. Vom căuta răspunsuri la următoarele întrebări, utilizând funcțiile bazelor de date:
Exemplu 36.: Câți bărbați și câte femei fumează (fig. 109.)?
131
Două țări, un scop, succes comun!
Fig. 109.: Câți bărbați și câte femei fumează?
Mai întâi vom răspunde la întrebarea: câți bărbați fumează. În domeniul de criterii (A1:H2), în câmpul Sex înscriem Bărbați, iar în câmpul Fumător scriem Da. Între cele două condiții este o relație logică tip ”și”, de aceea se află în același rând.
Formula va fi: DCOUNT(Date; A6; A1:H2)
Primul argument este însăși baza de date, definită anterior sub denumirea Date. Drept criteriu putem considera respondenții – câmpul A6 – acesta este câmpul numerelor de ordine, fiindcă numerele de ordine definesc respondenții. Drept
132
Două țări, un scop, succes comun!
domeniu al criteriului este selectat domeniul A1:H2, fiindcă acesta conține toate filtrele date.
Rezultatul formulei va fi: 6 persoane.
Dacă vrem să aflăm câți bărbați și câte femei fumează, ori ștergem condiția Sex, fiindcă bărbat și femeie sunt caracteristici alternative, fiind doar două variante, ori în celula B3 înscriem Femei, iar în celula D3 înscriem Da iar domeniul criteriilor îl extindem și asupra rândului al treilea (A1:H3).
Exemplu 37.: Care este vârsta medie a bărbaților (fig. 110.)?
Fig. 110.: Care este vârsta medie a bărbaților?
Putem răspunde simplu și ușor la întrebare. Avem un criteriu de filtrare:sexul, iar acolo scriem bărbați.
Formula va fi:
133
Două țări, un scop, succes comun!
=DAVERAGE(Date; C6; B1:B2).
Calculăm media de vârstă, deci folosim funcția DAVERAGE(), baza de date este Date, calculul se referă la criteriul de filtrare aflat în coloana C6, iar domeniul de filtrare este B1:B2. Rezultatul calculelor este 30,111.
Exemplu 38.: Care este greutatea corporală a femeilor peste 25 de ani sau mai înalte de 165 cm (fig. 111.)?
Fig. 111.: Care este greutatea corporală medie a femeilor peste 25 de ani sau cu înălțimea de peste 165 cm?
În acest caz avem atât ipoteza logică ”și”, cât și ”sau”. Peste 25 de ani ȘI femeie SAU peste 165 cm ȘI femeie. În astfel de situații, datele se introduc în două rânduri ale câmpului de filtrare. În coloana Sex, în celulele B2 și B3 se înscrie Femei, iar la Vârstă, în primul rând (celula C2)se înscrie >25, la coloana Înălțime corporală (celula E3) se înscrie >165.
134
Două țări, un scop, succes comun!
Formula va fi: =DAVERAGE(Date; F6; A1:E3)
Și aici calculăm o valoare medie, baza de date este Date, valorile din care se calculează media sunt în câmpul Greutate corporală, la care se referă celula F6, iar criteriile de filtrare au fost stabilite ca mai sus. Rezultatul calculului va fi 55,14 kg.
Exemplu 39.: Care este media, dispersia și varianța greutăților corporale ale persoanelor peste 25 de ani (fig. 112.)?
Fig. 112.: Cât este media, dispersia și varianța greutății corporale a persoanelor peste 25 de ani?
În acest caz ne interesează indicatorii statistici de bază referitori la greutatea corporală a celor trecuți de 25 de ani și vom face o filtrare unică. 135
Două țări, un scop, succes comun!
Formulele sunt: =DAVERAGE(Date; F6; C1:C2) =DSTDEV(Date; F6; C1:C2) =DVAR(Date; F6; C1:C2)
În fiecare formulă se regăsesc aceleași argumente:ne interesează indicatorul statistic respectiv al câmpului F6 (greutate corporală) din baza de date Date, domeniul criteriilor fiind C1:C2.
Rezultatele vor fi: Media Dispersia Varianța
Greutate corporală kg 67,8 17,1 293,9
Exemplu 40.: Care este cea mai mare și cea mai mică greutate corporală în cazul femeilor nefumătoare (fig. 113.)?
În acest caz, între criteriile de filtrare există relația logică ȘI. Pentru calcule se utilizează funcțiile DMAX și DMIN.
Formulele vor fi: =DMAX(Date; F6; B1:D2) =DMIN(Date; F6; B1:D2)
Rezultatele formulelor: Cea mai mică greutate corporală: 45 kg 136
Două țări, un scop, succes comun!
Cea mai mare greutate corporală: 65 kg
Fig. 113.: Care este cea mai mare și cea mai mică greutate corporală în cazul femeilor nefumătoare?
Exemplu 41.: Care este greutatea corporală a femeilor? (fig. 114.)
Fig. 114.: Care este înălțimea femeilor? 137
Două țări, un scop, succes comun!
În acest caz ne interesează o valoare, de aceea vom utiliza funcția DGET(). Formula va fi: =DGET(Date; E6; B1:B2)
Rezultatul calculului va fi #N/A!, fiindcă sunt mai multe date care corespund criteriului.
Exemplu 42.: Care a fost media la bacalaureat a persoanelor sub 30 de ani, care cunosc cel puțin 3 limbi (fig. 115.)?
Fig. 115.: Care a fost media la bacalaureat a persoanelor sub 30 de ani, care cunosc cel puțin 3 limbi?
138
Două țări, un scop, succes comun!
2.7. Gruparea datelor și subtotaluri
În cazul tabelelor de mari dimensiuni, amănumțite și cu multe rânduri poate apărea necesitatea de a vizualiza numai acele părți de care avem nevoie în acel moment. Se întâmplă adesea ca în grupurile formate să vrem să efectuăm totaluri sau alte calcule. În acest demers ne ajută funcțiunea de grupareși de sume parțiale din Excel. Atât gruparea cât și calculul subtotalurilor sunt posibile numai în cazul tabelelor (domeniilor de date) simple, de aceea dacă avem o bază de date, trebuie s-o transformăm. Transformarea se realizează cu comanda Convert to range (transformă în domeniu de celule) din TABLE TOOLS (instrumentele tabelului), banda DESIGN (proiectare) (fig. 116.), sau prin activarea meniului local cu butonul dreapta al mouse-ului, când apare Tabel›Transformă în domeniu de celule (fig. 117.).
Fig. 116.: Transformarea în domeniu de celule (Convert to range) pe banda de meniu Table Tools – Design
După transformarea în domeniu de date, butoanele de filtrare din dreptul denumirilor câmpurilor dispar.
Înaintea grupării și a calculelor de subtotaluri, tabelul trebuie ordonat, ținând seama de criteriile de ordonare dorite. 139
Două țări, un scop, succes comun!
Fig. 117.: Comanda Transformă în domeniu de celule (convert to range) în cu meniul local
După aceasta, în banda de meniu DATA, câmpul OUTLINE, găsim icon-ul calculului de subtotaluri. (fig. 118.).
Fig. 118.: Comanda Subtotal în banda de meniu Data
În fereastra Subtotaluri, (fig. 119.), expresia At each change in în seamnă câmpul de ordonare primară. La textul: Use function se poate alege funcția statistică dorită (SUM, COUNT, AVERAGE, MAX, MIN, PRODUCT, COUNT NUMBERS, STDEV, STDEVP, VAR, VARP). În dreptul textului Add 140
Două țări, un scop, succes comun!
subtotal to selectăm coloanele cu care dorim să efectuăm calculele statistice (aplicăm funcția selectată).
Fig. 119.: Fereastra Subtotal
Dacă debifăm dreptunghiul de selectare Replace current subtotals, putem vizualiza mai multe operații statistice prin aplicarea repetată a comenzii Subtotal.
Cu ajutorul elementului de meniu Page break between groups se poate stabili locul întreruperii paginii și poziția totalurilor.
Vizualizarea se face sub formă de Outline, ceea ce permite deschiderea sau închiderea nivelelor parțiale cu ajutorul butoanelor + și – din partea stângă a tabelului. Făcând clic pe cifrele din stânga tabelului care desemnează nivelele, se poate deschide sau închide câte un nivel întreg (fig. 120.). 141
Două țări, un scop, succes comun!
Fig. 120.: Modificări în Outline
Exemplu 43.: Inserarea sumei parțiale. În tabelul nr. 18. este redat rulajul unei întreprinderi de comerț en detaille în primul trimestru, pe luni și pe magazine. Aranjarea datelor s-a efectuat deja. Criteriul primar de aranjare a fost Numărul magazinului, iar cel secundar a fost perioada. Trebuie să efectuăm totalizarea trimestrială pentru fiecare magazin în parte, utilizând funcția Subtotal din Excel.
Selectăm tabelul, apoi, din banda de meniu DATA, câmpul OUTLINE facem clic pe iconița Subtotal. În fereastra apărută, criteriul de grupare va fi numărul magazinului (acesta a fost și criteriul primar de grupare pentru ordonare). Datorită faptului că realizăm o totalizare simplă, vom alege funcția SUM, coloanele de însumat vor fi Vânzări, mii Ft) și Adaos comercial, mii Ft (fig. 119.). Ca rezultat obținem următorul tabel (tabelul 19.):
Bineînțeles, putem calcula și adaosul comercial în %, care nu apare în rândurile de total, utilizând formula =E5/D5 pe care o copiem și în celelalte rânduri.
Putem avea și tabele în care nu se poate utiliza calculul subtotalului, totuși dorim să grupăm datele și să evidențiem rândurile de totaluri. Este cazul 142
Două țări, un scop, succes comun!
rândurilor aferente unor domenii (în original: területi sorok.) În acest caz selectăm acele rânduri care aparțin de același grup, apoi din banda de meniu DATA, în câmpul OUTLINE selectăm iconița Group (fig. 118.).
Tabelul 18.: Rulajele pe primul trimestru
Atenție! Ultimul rând nu trebuie inclus în selecție, acesta fiind rezervat totalurilor (tabelul 20.).
143
Două țări, un scop, succes comun!
Tabelul 19.: Rulajul trimestrial al magazinelor cu subtotaluri
144
Două țări, un scop, succes comun!
Tabelul 20.: Exemplu de tabel prevăzut cu grupare simplă
145
Două țări, un scop, succes comun!
3. Analiza scenariilor Analiza scenariilor este un instrument puternic de analiză a datelor în Excel. Acestea pot fi analize de tipul What if (ce-ar fi dacă), când examinăm modul în care variația datelor de intrare influențează rezultatul. Dar putem efectua și analize în care rezultatul final este o valoare sau stare stabilită de noi și suntem curioși, la ce valoare/valori de intrare se adeverește rezultatul așteptat.
Instrumentele analizei ”ce-ar fi dacă” (what if) sunt: −
Analiza cazurilor
−
Tabel de date
Instrumentele căutării valorii de intrare (input): −
Căutarea valorii țintă
−
Solver
Instrumentele de analiza scenariilor sunt accesibile din banda de meniu DATA - DATA TOOLS – butonul Analiza ce-ar fi dacă (What-If-Analysis), unde putem efectua analiza scenariilor (Scenario manager), căutarea valorii țintă (Goal Seek) și putem înființa un tabel de date (Data Table) (fig. 121.).
Solver nu este direct accesibil după instalarea Excel. Se poate regăsi între extensiile (add ins) care pot fi instalate ulterior. Pentru activare, intrăm în EXCEL OPTIONS pe pagina ADD INS. Selectăm add in-ul Solverși facem
146
Două țări, un scop, succes comun!
clic pe pe butonul GO. Bifăm dreptunghiul de selectare din fața add in-ului Solver pe pagina care se deschide (fig. 122.).
Fig. 121.: Iconița de comandă al analizei scenariilor
Fig. 122.: Activarea Solver
147
Două țări, un scop, succes comun!
3.1. Analize tip ”ce-ar fi dacă...” (what if)
La finalul analizei, ca un acord final al pregătirii deciziei, examinăm căile posibile ale evoluției problemei, pregătim variante decizionale. Scopul urmărit astfel este să vedem, anumite variații de input cum influențează sistemul studiat, respectiv rezultatul. Acest tip de analize îl numim analize de senzitivitate.
Analiza de senzitivitate constă în doi pași principali: −
Modificarea variabilelor de intrare și analiza efectelor datelor modificate. Acest pas se efectuează pentru fiecare caz important.
−
Analiza comparativă a variantelor decizionale obținute în prima etapă.
Eficacitatea analizei de senzitivitate poate fi mărită prin utilizarea managerului de scenarii și a tabelului de date.
3.1.1. Managerul de scenarii
Calculele și cercetările noastre ne aduc adesea în fața unor probleme de examinat în care există variabile nesigure și diverse date de intrare. Pentru asemenea cazuri se poate utiliza elementul de meniu Manager de scenarii (Scenario Manager) din submeniul ANALIZA CE-AR FI DACĂ (WHAT IF ANALYSIS) aflat în banda de meniu DATA. Cu ajutorul acestui element de meniu se poate calcula tabelul nostru, utilizând aceleași formule sau serii de formule, pentru date de intrare diferite, fără a fi necesară recopierea tabelului în
148
Două țări, un scop, succes comun!
altă parte. Este de la sine înțeles că diferitele cazuri astfel create pot fi interpretate precis numai prin comparație cu modelul de bază.
Când vrem să pornim utilizarea acestui element de meniu, trebuie să adăugăm un caz nou (Scenario), ceea ce se poate realiza după deschiderea ferestrei Scenario Manager, prin activarea butonului Adaugă (Add) din partea dreaptă a ferestrei (fig. 123.).
Fig. 123.: Crearea unui nou caz cu managerul de scenarii
Apare fereastra de dialog Add Scenario unde, în câmpul Scenario Name se înscrie noua denumire. Ulterior această denumire va identifica întotdeauna cazul respectiv.
În câmpul Celule care se modifică (Changing Cells) se selectează celulele care vor conține variabilele formulei. Dacă celulele nu sunt poziționate unele lângă 149
Două țări, un scop, succes comun!
celelalte, cu ajutorul butonului CTRL pot fi selectate și celule nealăturate (fig. 124.).
Fig. 124.: Fereastra de dialog pentru adăugarea unui scenariu nou
În câmpul Comentariu (Comment) se înscriu informații referitoare la data/ locul întocmirii, data/locul modificării cât și alte informații pertinente. În câmpul Protecție (Protection) putem declara protejarea foii de lucru. Dacă se bifează dreptunghiul din dreptul textului Prevent changes, cazul nu poate fi editat ulterior.
Prin bifarea comenzii Hide din câmpul Protection, cazul poate fi eliminat de pe lista cazurilor existente.
După ajustări apare panelul următor (fig. 125.) unde există posibilitatea editării, ștergerii, asamblării cu alte scenarii, respectiv solicitarea vizualizării cazului. Pe 150
Două țări, un scop, succes comun!
panel se vede valoarea celulei variabile aferente cazului respectiv, cât și comentariul.
Fig. 125.: Fereastra de dialog a cazurilor
Prin clic pe butonul legare (Merge), pot fi asamblate cazurile întocmite pe orice celulă a oricărei foi de lucru din interiorul unui fișier. Aceasta înseamnă că pot fi introduse pe foaia de lucru activă, cazurile de pe celelalte foi de lucru (valorile datelor de intrare și denumirile). Înaintea lansării comenzii trebuie deschise fișierele care conțin fiecare caz.
În câmpul fișier (Book) se introduce fișierul care conține foaia de lucru a cazului care trebuie asamblat, iar în câmpul Foaie (Sheet) putem preciza foaia/ foile de lucru de pe care dorim să efectuăm asamblarea. Dacă facem clic una
151
Două țări, un scop, succes comun!
câte una pe foile de lucru, în partea inferioară a panelului putem vedea câte cazuri se găsesc pe foaia respectivă.
Prin clic pe butonul OK, programul selectează cazurile care trebuie asamblate și le copiază pe foaia de lucru în editare (fig. 126.).
Fig. 126.: Fereastra de dialog a asamblării cazurilor
În meniul Raport rezumativse poate cere un raport (Scenario Summary) sau un tabel centralizator (Scenario Pivot Table Report) referitor la caz (fig. 127.).
În formatul Raport se găsesc valorile actuale, celulele care se modifică, aferente fiecărui caz în parte, cât și celulele care conțin rezultatele. În coloana Valori actuale se vizualizează valorile care pe parcursul întocmirii raportului se aflau în celulele variabile. Celulele referitoare la cazurile individuale vor avea fundal gri în raport.
152
Două țări, un scop, succes comun!
Fig. 127.: Fereastra de dialog de solicitare a raportului rezumativ
În formatul Tabel centralizator pot fi introduse presupuneri cu privire la celulele variabile. În câmpul Etichetele rândurilor (Row Labels) pot fi introduse câmpurile respective de rezultate.
Pentru fiecare format de raport, acesta va fi plasat pe o foaie separată. Pe marginea din stânga a raportului vom găsi marcaje pătrate cu + respectiv -, cu ajutorul cărora pot fi deschise sau închise toate elementele de pe nivelul ierarhic respectiv. Modul de funcționare al butoanelor este asemănător cu acela din fereastra de deschidere și închidere a fișierelor din Administratorul Windows.
Exemplu 44.: Firma Bútorkészítı Kft fabrică pachete tip ”asamblează singur” din elemente prefabricate. Firma elaborează diferite scenarii pentru evoluția viitoare a cheltuielilor. Pentru elaborarea scenariilor lucrează cu funcțiunea Manager de scenarii din Excel. Tabelul 21. prezintă datele de bază ale calculului de costuri. Celulele colorate în lila conțin date de prognoză nesigure, de aceea am dori să examinăm, la ce variații ne putem aștepta în cazul
153
Două țări, un scop, succes comun!
modificării necesarului, a cheltuielilor specifice, respectiv creșterii cheltuielilor specifice, cum va arăta totalul cheltuielilor per produs.
Tabelul 21.: Datele inițiale privind cheltuielile firmei Bútorkészítı Kft.
Ca prim pas vom întocmi tabelul de prognoză a cheltuielilor (fig. 128.), utilizând datele de bază. Calculele le-am efectuat în domeniul E5:H10, iar variația cheltuielilor am reprezentat-o grafic. Am calculat o prognoză pe încă 5 ani după anul curent. În pasul următor introducem acele cazuri pentru care dorim să examinăm variația cheltuielilor în funcție de variația valorilor de intrare.
La introducerea cazului să încercăm să-i atribuim o denumire care conține suficientă informație și pentru o eventuală prelucrare ulterioară. După aceea introducem valorile variabilelor aferente cazului dat (fig. 129.).
154
Două țări, un scop, succes comun!
Fig. 128.: Prognoza cheltuielilor
Fig. 129.: Introducerea unui caz al aplicației
Analiza cazurilor se poate realiza astfel: alegem cazul corespunzător din listă, facem clic pe butonul de vizualizare (Show). Aceasta are ca rezultat suprascrierea datelor din tabel cu datele de bază introduse prin cazul respectiv și 155
Două țări, un scop, succes comun!
apare imediat efectul asupra rezultatelor. A doua posibilitate este solicitarea unui raport rezumativ (fig. 127.), în cazul căruia putem preciza celulele din care cerem totalizare. Putem cere un raport comparativ (tabelul 22.) prin selectarea butonului Raport din fig. 127. Sau putem cere tabel centralizator (pivot table) cu ajutorul butonului respectiv (tabelul 23.).
Tabelul 22.: Raportul de caz pentru prognoza cheltuielilor firmei Bútorkészítı Kft.
3.1.2. Tabelul de date (Data Table)
Tabelele de date oferă un ajutor substanțial în analiza de senzitivitate a unei probleme dintr-unul sau două puncte de vedere. Deosebim două variante ale tabelelor de date: cu o variabilă și cu două variabile. Acestea fac posibilă 156
Două țări, un scop, succes comun!
calcularea uneia sau mai multor formule cu diferite date și modificarea ușoară. Deschiderea aplicației se face după întocmirea tabelului cu datele noastre, pe calea: DATA - WHAT IF ANALYSIS - Data Table.
Tabelul 23.: Tabel centralizator al prognozei cheltuielilor firmei Bútorkészítı Kft.
Tabelele de date trebuie astfel aranjate încât valorile de intrare să se găsească într-o coloană (direcționat pe coloană)sau într-un rând(direcționat pe rând). Formulele tabelului de date cu o variabilă trebuie să se refere la o celulă de intrare.
În primul rând sau prima coloană a tabelului de date [înscriem] valorile pe care dorim să le înlocuim în celula de intrare pe parcursul analizei de senzitivitate.
157
Două țări, un scop, succes comun!
−
Dacă tabelul de date este direcționat pe coloană, (valorile de înlocuire sunt așezate pe vericală), formula se va înscrie încelula aflată cu un rând mai sus și cu o celulă mai la dreapta față de prima valoare a coloanei. Restul formulelor se înscriu la dreapta primei formule.
−
Dacă valorile de intrare sunt direcționate pe rând (valorile de înlocuire sunt așezate într-un rând), atunci formula se înscrie la stânga șirului de valori, cu o celulă mai jos. Restul formulelor le introducem sub prima.
După aceasta se selectează tabelul și se deschide punctul de meniu Data Table din DATA – WHAT-IF ANALYSIS. Aici vom introduce celula de intrare a valorilor de rând sau de coloană. Exemplu 45.: La Bútorkészítı Kft se urmărește examinarea modului în care variațiile anuale ale cheltuielilor legate de materia primă PAL furniruit cu salcâm vor influența prognoza cheltuielilor firmei pe următorii 5 ani (fig. 130.).
Ca prim pas introducem variația aplicată în prezent în celula G14 - adresa celulei =B20 (3,9%). Apoi înscriem fără întrerupere, în domeniul H14:L14, valorile de înlocuire dorite.
În celula G15 înscriem formula de calcul al cheltuielilor care se referă la anul în curs și la 3,9%: =((B$5 * B$13) * B$10) * (1 + $G$14)^(E15) + (SUMPRODUCT(B$6:B$9; $B$14:$B$17) * B$10) * (1 + $B$21 )^(E15)
158
Două țări, un scop, succes comun!
Fig. 130.: Variația cheltuielilor Bútorkészítı Kft.pentru diferite variații ale cheltuielilor cu PAL-ul furniruit cu salcâm
Am introdus formula în celula G15 fiindcă în acest caz, valorile de intrare sunt așezate în rând, iar în aceste situații, formula se înscrie în stânga, cu un rând sub cel al valorilor. După aceasta să copiem formula în domeniul G16:G20.
Selectăm domeniul G14:L20, deschidem DATA – WHAT-IF ANALYSIS Data Table, și pentru căvalorile de intrare sunt într-un rând, în celula de intrare a valorilor așezate în rând înscriem G14.
Putem face mai plastică analiza datelor prin reprezentarea grafică a șirurilor de date.
159
Două țări, un scop, succes comun!
Cu ajutorul tabelului de date cu două variabile studiem modul în care diferitele valori ale celor două variabile influențează rezultatele unei formule. Formula trebuie să se refere la două celule de intrare diferite.
Tabelul de date cu două variabile se întocmește astfel: −
Într-o celulă a foii de lucru înscriem formula referitoare la valorile de înlocuire ale celor două celule de intrare.
−
Dedesubtul formulei, în aceeași coloană înscriem unul dintre șirurile de valori de intrare.
−
Completăm cealaltă listă, în dreapta formulei, pe același rând cu aceasta.
−
Selectăm domeniul de celule care conține formula, cât și coloana și rândul valorilor.
−
În grupul DATA – DATA TOOLS facem clic pe butonul What If Analysis, apoi pe comanda Data Table.
−
În câmpul celula de intrare a valorilor de rând (row input cell) înscriem adresa celulei în care dorim să înlocuim șirul valorilor.
−
În câmpul celula de intrare a valorilor de coloană (Column input cell) înscriem adresa acelei celule de intrare în care dorim să înlocuim coloana valorilor. Apoi facem clic pe butonul OK.
Exemple 46.: Firma Bútorkészítı Kft analizează, cu ajutorul unui tabel de date cu două variabile, modul în care variația cererii influențează totalul cheltuielor pe anul în curs (an 0). Cererea actuală este înscrisă în celulele B10 și C10 (fig. 131.).
160
Două țări, un scop, succes comun!
Fig.131. tabel de date cu două variabile
Mai întâi scriem formula de calcul a cheltuielilor totale în celula G14 (=G6+H6). Formula nu conține explicit, adresele/ referințele celulelor variabile, dar acest lucru nici nu este necesar. În cazul întocmirii tabelului de date cu două variabile, referința indirectă este suficientă (vezi cele două bule de text din fig. 131.).
Lângă și sub formulă scriem valorile celor două variabile pentru care dorim să efectuăm calculele (domeniile H14:L14 și G15:G20) Selectăm domeniul G14:L20. În grupul DATA – DATA TOOLS facem clic pe butonul What If Analysis apoi pe comanda Data Table. În câmpul celula de intrare a valorilor de rând înscriem referința C10, iar în câmpul celula de intrare a valorilor de 161
Două țări, un scop, succes comun!
coloană înscriem referința B10. Și în cazul acesta putem plasticiza prezentarea prin reprezentarea grafică a șirurilor de date.
3.2. Căutarea valorii țintă cu Solver
Cu ajutorul analizelor de tip Ce-ar fi dacă.. (What-If...), analiza de senzitivitate poate fi simplificată și accelerată, adică determinăm rezultatele pentru valori diferite ale variabilei de intrare. Căutarea valorii țintă și Solver acționează tocmai invers: cunoscând rezultatul unei formule, determină datele de pornire. De exemplu se dă o formulă cu ajutorul căreia, cunoscând suma creditului, dobânda și perioada de rambursare, se poate calcula rata. De exemplu, dacă socotim că, la o dobândă anuală de 10 % pe o perioadă de 10 ani putem să ne asumăm o rată de 40.000 de forinți pe lună, după rescrieri îndelungi ale sumei creditului putem găsi soluția. Prin căutarea valorii țintă, această muncă se simplifică.
Cu Solver se poate rezolva și problema anterioară dar și probleme mult mai complicate. Pe lângă problemele simple de căutare a valorii țintă îl putem utiliza la rezolvarea problemelor lineare și nelineare cu restricții.
162
Două țări, un scop, succes comun!
3.2.1. Căutarea valorii țintă
Este indicat să apelăm la căutarea valorii țintă când cunoaștem rezultatul final, dar nu cunoaștem datele de pornire care au dus la acesta. După introducerea datelor necesare căutării valorii țintă, programul modifică în mod repetat valoarea celulei până când formula influențată de valoarea celulei dă un rezultat destul de apropiat de valoarea dorită.
Calea de acces este: banda de meniu DATA – WHAT-IF ANALYSIS – Goal Seek (fig. 132.). •
Câmpul Celula țintă (Set Cell) conține formula dată, prin rezolvarea căreia obținem rezultatul final.
•
Câmpul Valoare țintă (To value) conține o variabilă la care ne referim prin adresă de celulă sau denumire.
•
Câmpul Celula care se modifică (By changing cell) conține o variabilă, la care ne putem referi prin adresă de celulă sau denumire. În câmpul Prin modificarea celulei poate fi numai valoare, nu formulă.
Fig. 132.: Fereastra Căutarea valorii țintă
163
Două țări, un scop, succes comun!
Exemplu 47.: La Bútorkészítı Kft se caută să se determine numărul de produse de culoarea cireșului în cazul în care costurile totale anuale nu pot depăși 800.000 Forinți (fig. 133.).
Fig. 133. Căutarea valorii țintă pentru costurile totale
În fereastra de căutare a valorii țintă, celula țintă va fi I6, fiindcă în aceasta se calculează costurile totale. Valoarea acesteia vrem să o stabilim la 800.000 Ft. De aceea, valoarea țintă se stabilește la 800.000 Ft.
Celula care se modifică va fi C10. După tastarea OK, Excel calculează valoarea celulei C10, care va fi 74,8 bucăți.
164
Două țări, un scop, succes comun!
3.3. Solver
În acest subcapitol vom prezenta parametrii Solver, posibilitățile sale de configurare și, fără pretenția de a fi exhaustivi, câteva domenii posibile de utilizare. Așa cum s-a arătat și anterior, Solver nu este doar un instrument de căutare a valorii țintă, ci oferă rezolvarea unor modele matematice lineare și nelineare cu restricții. Se disting în mod special aplicațiile de programare lineară, fiindcă foarte multe probleme legate de afaceri pot fi exprimate și rezolvate sub această formă.
3.3.1. Configurațiile de bază ale Solver
În cele ce urmează vom trece în revistă pe scurt, configurațiile de bază ale Solver, urmând să ne ocupăm de ele mai amănunțit la descrierea problemelor individuale.
Instrumentul Microsoft Excel Solver utilizează procedeul de optimizare nelineară Generalized Reduced Gradient (GRG2), dezvoltat de Leon Lasdon (University of Texas at Austin) și Allan Waren (Cleveland State University). Pentru problemele lineare și cu valori întregi utilizează metoda simplex cu limitarea variabilelor, respectiv metoda branch-and-bound (ramificare și restrângere); aceasta din urmă a fost pusă la punct de către John Watson și Dan Fylstra (Frontline Systems, Inc.).
165
Două țări, un scop, succes comun!
Cu ajutorul Solver putem căuta pe foaia de lucru, valoarea maximă, minimă sau determinată de noi, a unei formule aflate într-o celulă dată, numită celulă țintă. Pentru aceasta, Solver utilizează acel grup de celule care se referă direct sau indirect la formula aflată în celula țintă. Solver determină modificarea valorii celulelor variabile date în așa fel încât rezultatul final să fie valoarea determinată cu ajutorul formulei din celula țintă. Cu ajutorul restricțiilor putem delimita valorile pe care Solver le va utiliza în model. Condițiile restrictive se pot referi și la acele celule care influențează formula din celula țintă. Cu ajutorul Solver putem determina valoarea maximă sau minimă dintr-o celulă când alte celule se modifică; de exemplu putem calcula influența cheltuielilor planificate pentru publicitate asupra profitului planificat.
Solver poate fi pornit din câmpul ANALYSIS al benzii de meniu DATA. Dacă nu găsim iconița de pornire Solver, acesta trebuie încărcat conform celor descrise în capitolul Analiza scenariilor.
După selectarea iconiței Solver apare fereastra Parametrii Solver (Solver Parameters) (fig. 134.), în care găsim posibilitățile de configurare. −
Celula țintă (Set target cell): în programarea matematică celula țintă este funcția țintă de la care ne așteptăm să ia o anumită valoare sau să aibă valoarea maximă sau minimă. Celula țintă trebuie să conțină o formulă.
−
Să fie... (Equal to): aici trebuie să precizăm dacă valoarea celulei să fie maximă, minimă sau de o anumită valoare. O valoare o putem preciza înscriind-o în câmp.
166
Două țări, un scop, succes comun!
Fig. 134.: Parametrii Solver −
Celule care se modifică (By changing cells): acele celule a căror valoare se poate modifica până la îndeplinirea condițiilor restrictive ale problemei și până când în celula țintă valoarea atinge valoarea țintă. Celulele care se modifică trebuie să se refere direct sau indirect la celula țintă. Celulele care se modifică sunt variabilele modelului.
−
Propunere (Guess): caută toate celulele care nu conțin formule la care se referă formula din celula țintă și plasează adresele lor în câmpul Celule care se modifică.
−
Condiții restrictive (Subject to the Constraints): enumeră restricțiile actuale ale problemei.
−
Adăugare (Add): deschide fereastra de dialog pentru adăugarea unei restricții.
−
Editare (Change): deschide fereastra de dialog pentru editarea restricției.
−
Ștergere (Delete): șterge restricția selectată.
167
Două țări, un scop, succes comun!
−
Rezolvare (Solve): pornește rezolvarea problemei.
−
Închidere (Close): închide fereastra de dialog fără a rezolva problema. Memorează modificările introduse cu butoanele Opțiuni, Adăugare, Editare sau Ștergere.
−
Opțiuni (Options): deschide fereastra de dialog Solver Options cu ajutorul căreia putem introduce sau salva modele de probleme, respectiv putem face ”reglajul fin” al amănuntelor rezolvării.
−
Revenire la starea inițială(Reset All): șterge setările problemei actuale și toate butoanele le așează pe poziția de bază.
Cu ajutorul opțiunilor Solver putem seta amănuntele fine ale procedurii de rezolvare, se pot introduce și salva descrierile problemelor, se pot da parametrii problemelor lineare și nelineare. Fiecărei setări îi corespund niște valori de bază care corespund în cazul majorității problemelor (fig. 135.) •
Timp max. (Max. Time): restrânge durata căutării soluției. Deși cea mai mare valoare posibilă este 32 767, durata de 100 de secunde este suficientă pentru rezolvarea majorității problemelor de mică anvergură.
•
Iterații (Iterations): Limitează timpul de rezolvare prin restrângerea numărului de iterații. Deși valoarea maximă poate fi 32 767, numărul de 100 de iterații, ca valoare de bază, corespunde pentru rezolvarea majorității problemelor de mică anvergură.
•
Precizia (Precision): reglează precizia rezolvării; numărul înscris stabilește dacă valoarea unei celule-condiție este egală cu valoarea țintă, respectiv dacă se încadrează în limita inferioară și cea superioară. Precizia
168
Două țări, un scop, succes comun!
este un număr fracționar între 0 și 1. Cu cât numărul de zecimale este mai mic, cu atât precizia este mai mică, ex. 0,0001 înseamnă o precizie mai mare decât 0,01. Cu cât prevedem o precizie mai mare (cu cât numărul introdus este mai mic), cu atât rezolvarea durează mai mult.
Fig. 135.: Setări Solver •
Toleranța (Tolerance): stabilește procentul admis de eroare față de rezultatul optim, dacă partea restrictivă a problemei este un număr întreg. O toleranță mai ridicată accelerează de obicei, procesul de rezolvare.
•
Convergența (convergence): dacă pe parcursul ultimelor cinci iterații, variația relativă a valorii celulei țintă este mai mică decât valoarea înscrisă în câmpul Toleranță, Solver se oprește. Convergența se poate utiliza numai în cazul problemelor nelineare, iar valoarea ei va fi dată cu un număr fracționar între 0 și 1. 169
Două țări, un scop, succes comun!
•
Presupunere model linear (Assume linear model): dacă toare corelațiile din model sunt lineare, deci avem o problemă de optimizare lineară, rezolvarea este mai rapidă.
•
Presupunere valori nonnegative (Assume non-negative): dacă se activează, Solver setează la zero valoarea limită inferioară a acelor celule pentru care nu am setat limită inferioară în câmpul Restricție din fereastra de dialog care introduce restricțiile.
•
Recunoaștere ordine de mărime (Use Automatic Scaling): conectează modificarea automată a ordinii de mărime dacă valorile de intrare și de ieșire diferă prin ordine de mărime, ex. când profitul (%) depinde de valoarea investițiilor (milioane Ft).
•
Arată rezultatele iterațiilor (Show Iteration Results): întrerupe funcționarea Solver pentru a arăta rezultatul fiecărei iterații.
•
Estimări (Estimates): stabilește metoda (tangentă sau pătrartică) utilizată în procedeele de căutare unidimensională pentru estimarea valorii inițiale a variabilelor de bază. o
Tangentă: extrapolează linear, pornind dintr-un vector tangent.
o
Pătratic:utilizează extrapolarea pătratică. Metoda este deosebit de eficace în cazul problemelor puternic nelineare.
•
Derivate (Derrivatives): stabilește dacă pentru estimarea derivatelor parțiale ale funcției țintă și a funcțiilor-condiții, programul utilizează procedeul diferențierii Înainte (Forward) sau Centrale (Central). o
Înainte (Forward): se utilizează pentru funcții netede și cu aspect grafic continuu.
170
Două țări, un scop, succes comun!
o
Central (Central): pentru acele funcții al căror aspect grafic nu este neted și continuu. Deși această metodă necesită mai multe calcule, poate ajuta în situațiile când Solver anunță că nu poate îmbunătăți rezolvarea.
•
Căutare (Search): specifică dacă la stabilirea direcției de căutare pentru iterarții, programul să utilizeze algoritmul Newton sau algoritmul conjugat. o
Newton: este o metodă quasi-newtoniană, care utilizează în general mai multă memorie, dar mai puține iterații decât metoda conjugată.
o
Conjugată: utilizează mai puțină memorie decât metoda Newton, dar în general are nevoie de mai multe iterații pentru atingerea nivelului de precizie stabilit. Merită să încercăm această metodă când problema este de dimensiuni mari, iar memoria este limitată, sau dacă pe parcursul iterațiilor, rezultatele se schimbă prea încet.
•
Încărcarea modelului (Load Model): vizualizează fereastra de dialog pentru încărcarea modelului, unde putem stabili ce model dorim să introducem.
•
Salvarea modelului (Save Model): vizualizează fereastra de dialog Salvare Modelîn care putem stabili locul unde va fi salvat modelul. Numai atunci să deschidem această fereastră, dacă dorim să salvăm mai mult de un model împreună cu foaia de lucru, fiindcă salvarea primului model este automată.
171
Două țări, un scop, succes comun!
3.3.2. Programarea lineară în rezumat
Exemplu 48.: Csilla adoră dulciurile, mai ales napolitanele cu ciocolată și înghețata. Deși, într-un clasament de zece puncte, napolitanele ar primi 6 puncte pe lângă cele 9 puncte pentru înghețată. Totuși, ea decide ca pe viitor să-și limiteze consumul de dulciuri. A început să studieze compozițiile de pe ambalaje și a constatat că o napolitană cu ciocolată are 25 de grame și conține 120 de calorii și 5 grame de grăsime. O înghețată are 60 de grame, conține 180 de calorii și 10 grame de grăsimi. Csilla își permite zilnic 600 de calorii și 25 de grame de grăsimi, dar vrea să mănânce zilnic cel puțin 120 de grame de dulciuri, astfel încât meniul să conțină minimum o napolitană și o înghețată. Acum se gândește câte napolitane cu ciocolată și câte înghețate să mănânce zilnic pentru a respecta regulile pe care și le-a impus, dar combinația să fie cât mai mult pe gustul ei?
Oricât de simplă ni se pare problema de mai sus, dacă o analizăm mai atent, nu este atât de ușor de rezolvat. Csilla și-a impus două limite superioare, adică a maximizat consumul zilnic de calorii și de grăsimi. În plus și-a stabilit și o limită inferioară în privința consumului de dulciuri când a decis să mănânce minimum 120 de grame pe zi. Este clar că există multe combinații posibile, mai ales dacă luăm în considerare și rezultatele care nu au neapărat valori întregi (ex. se poate consuma și un sfert de napolitană). Dar dintre multele rezolvări, pe Csilla o interesează una singură, adică aceea care i se pare cea mai gustoasă, adică atinge punctajul maxim în aprecierea ei.
172
Două țări, un scop, succes comun!
Problema de mai sus poate fi formulată ca o problemă de programare lineară. Adică, ținând seama de limitările date se caută o soluție cu rezultat maxim. Funcția care definește rezultatul se numește funcție țintă.
Problema Csillei: x1:napolitane cu ciocolată, x2: înghețată x1 ≥ 0; x2 ≥ 0 120x1 + 180x2 ≤ 600 5x1 + 10x2 ≤ 25 25x1 + 60x2 ≥ 120 x1 ≥ 1 x2 ≥ 1 6x1 + 9x2→MAX! Modelele de programare lineară se pot utiliza în toate acele cazuri unde variabilele pot fi considerate mai mult sau mai puțin determinante, iar coeficienții, constanți. Doar câteva dintre aplicațiile posibile sunt: optimizarea sortimentației de produse, modele de amestecare (compoziția cu costurile minime), modelare financiară pe termen scurt, optimizarea transportului și distribuirii, optimizarea planificării muncii etc. Foarte multe probleme tip rețea se pot rezolva, de asemenea, prin programare lineară.
În Excel, problemele de sus pot fi modelate relativ simplu și pot fi rezolvate fără cunoștințe deosebite de algebră lineară.
173
Două țări, un scop, succes comun!
3.3.3. Prezentarea aplicațiilor Solver
3.3.3.1. Schema elaborării unui model de programare lineară în Excel
Fig. 136. prezintă schema generală a unui model de programare lineară. În capul de tabel inserăm denumirile variabilelor (produse, servicii, componenți etc.). Ne interesează o anumită combinație a variabilelor. Numeric, variabilele vor apărea în rândul rezultatelor. În bara laterală, resursele au fost marcate cu u1, u2… La intersecția resurselor cu variabilele vor apărea consumurile specifice (a11, a12…). De exemplu, a11 înseamnă că, din resursa u1, pentru obținerea produsului x1 este nevoie de cantitatea a11. Indexul 11 înseamnă că este vorba despre elementul aflat la intersecția dintre prima resursă și primul produs.
Fig. 136.: Schema generală a unui model de programare lineară în programul de gestionare a tabelelor
174
Două țări, un scop, succes comun!
Rândul de sub resurse (-z) conține coeficienții funcției țintă, iar ultimul rând este deja amintitul rând al rezultatelor. În cazul coloanelor, după coloana variabilelor urmează coloana Consum, aici calculăm cu ajutorul funcției SUMPRODUCT(), cantitățile realmente utilizate. Urmează coloana relațiilor. Semnul <= înseamnă limita de sus, >= înseamnă limita de jos, iar = înseamnă, natural, egalitate. Ultima coloană, a capacităților conține restricțiile. Deci, dacă, de exemplu, se introduce o limită superioară, atunci valoarea de facto a consumului cuprinsă în rândul respectiv este mai mică sau egală cu cantitatea aflată la dispoziție.
Exemplu 48. (continuare): Să vedem acum, prin exemplul prezentat în introducere, cum trebuie să construim un model de programare lineară în Excel. Dorim să știm cîte napolitane cu ciocolată și câte înghețate poate mânca Csilla în fiecare zi, astfel încât să-i convină cel mai mult.
Modelul adaptat în Excel este prezentat în fig. 137. Variabilele sunt napolitana (x1) și înghețata (x2), restricțiile se referă la calorii, grăsimi, cantitate totală și la numărul minim zilnic de napolitane și de înghețată (u1 – u5). Coeficienții funcției țintă sunt valorile pentru napolitană și pentru înghețată, date de Csilla.
După întocmirea tabelului de pornire urmează setarea parametrilor Solver (fig. 138.): •
Celula țintă va fi E9, aici calculăm nota obținută de compoziția actuală, cu ajutorul funcției =SUMPRODUCT(C9:D9; $C$10:$D$10)
175
Două țări, un scop, succes comun!
Fig. 137.: Tabelul de pornire al problemei Csillei •
Căutăm valoarea maximă a celulei țintă, de aceea în rândul Să fie... (Equal to) activăm butonul Max.
•
Celulele care se modifică vor fi C10:D10, acesta este rândul combinațiilor. Aici vom obține, după rezolvarea cu Solver, numărul de napolitane cu ciocolată și numărul de înghețate pe care le poate consuma Csilla.
•
Condițiile restrictive pot fi date în două blocuri. Putem vorbi despre blocuri fiindcă relațiile consecutive de același tip pot fi fixate ca blocuri, ceea ce, mai ales în cazul modelelor de mari dimensiuni, poate reduce sensibil timpul pentru introducerea condițillor restrictive. Putem adăuga modelului o nouă condiție restrictivă cu ajutorul butonului Add. În fereastra care apare (fig. 139.), în câmpul referinței/ adresei să selectăm
176
Două țări, un scop, succes comun!
partea stângă a condiției 1 , care în exemplul nostru este coloana Consumuri. Condiția restrictivă este coloana Limite (Korlát)2, în fereastra din mijloc alegem, bineînțeles, operatorul de care avem nevoie.
Fig. 138.: Setările Solver în cazul exemplului cu dulciuri
Fig. 139.: Introducerea unei noi condiții restrictive
1
2
Domeniul referință la celulă conține întotdeauna formulă, aceasta va fi partea stângă a inegalității lineare. În versiunea Excel în limba engleză, acest lucru apare și în denumire, pentru evitarea confuziilor (Left-hand-side (LHS) of constraints). În Excel-ul în limba engleză este Right-hand-side (RHS) of constraints. Partea dreaptă a condiției restrictive este întotdeauna o constantă.
177
Două țări, un scop, succes comun!
Primul bloc se referă la limita pentru calorii și grăsimi, iar cel de al doilea, la cantitatea minimă consumată zilnic, respectiv la numărul minim de napolitane și de înghețate consumate zilnic. Într-un model de programare lineară întotdeauna punem condiția de nonnegativitate a variabilelor și trebuie să precizăm, de asemenea, că este vorba despre un model de programare linear. Pentru aceasta facem clic pe butonul Options și apare fereastra Solver Options (fig. 135.). Bifăm dreptunghiurile de selectare Assume linear model și Assume Non-Negative. Apoi facem clic pe butonul OK și pe butonul Solve.
După acționarea butonului Solve apare fereastra Rezultate Solver (fig. 140.) în care, dacă am procedat corect, iar pe baza condițiilor modelului există soluție, găsim inscripția: Solver a găsit soluție. Au fost îndeplinite toate premizele și condițiile de optimizare.
Fig. 140. Fereastra rezultatelor Solver
În cele ce urmează putem alege între două posibilități. Dacă selectăm butonul ”Cu valoarea calculată”, atunci obținem rezultatele obținute ca urmare a
178
Două țări, un scop, succes comun!
calculelor efectuate de Solver. Aceasta este setarea de bază și dacă există soluție, o vom alege în mod firesc. De obicei selectăm butonul ”Cu valoarea inițială” numai dacă primim un mesaj de eroare. În dreapta ferestrei putem alege dintre trei rapoarte: •
Rezultat,
•
Senzitivitate,
•
Limite.
Dacă selectăm toate cele trei rapoarte, atunci Solver, pe lângă rezolvarea modelului de bază va crea alte trei foi de lucru, câte una pentru fiecare raport.
În cele ce urmează examinăm rezolvarea modelului, apoi cele trei rapoarte. −
Csilla trebuie să consume zilnic 3 napolitane cu ciocolată și o înghețată (acest lucru îl citim din rândul rezolvare – combinații).
−
Pentru combinația de dulciuri de mai sus obținem punctajul maxim pentru gust, respectiv 27 (3·* 6 + 1·* 9).
−
Prin această combinație nu utilizează toate caloriile permise: 540 în loc de 600 de calorii (celulele G4, respectiv E4).
−
Consumă cantitatea totală permisă de grăsimi, adică 25 de grame (E5 egal cu G5).
−
Combinația corespunde cerințelor, fiindcă poate consuma zilnic cel puțin o bucată din fiecare produs (fig. 141.).
Analiza Raportului privind rezultatul (fig. 142.). 179
Două țări, un scop, succes comun!
La toate cele trei rapoarte, pentru o înțelegere mai bună vom utiliza denumirile generate de Excel pentru coloane, deși acestea sunt adesea străine de limba maghiară, ba mai mult, denumirile nu exprimă întotdeauna, înțelesul real. Bineînțeles că aici ne vom ocupa în amănunt cu înțelesul real.
Fig. 141.: Planul de consum de dulciuri al Csillei
Raportul privind rezultatul se compune din trei părți: evaluăm separat celula țintă, celulele care se modifică și condițiile restrictive. −
La analiza celulei țintă, în paranteze figurează valoarea limită a acesteia sau, pur și simplu, valoarea pe care i-am atribuit-o noi. Valoarea inițială este valoarea dinaintea rulării Solver, iar valoarea finală este cea de după rularea Solver.
180
Două țări, un scop, succes comun!
−
În partea următoare a raportului analizăm celulele care se modifică, adică variabilele. Și aici, în coloana valorilor inițiale sunt valorile dinaintea rulării programului, iar în coloana valorilor finale sunt valorile de după rezolvare și acestea vor fi comparate.
Fig. 142.: Raportul despre rezultate în Solver −
Ultima parte a raportului oferă informații despre condițiile restrictive. Coloana valoarea celulei redă valoarea părții stângi a funcției. Acesta este tocmai valoarea calculată cu ajutorul funcției SUMPRODUCT() din coloana consum. În coloana formula pot fi văzute relațiile introduse la 181
Două țări, un scop, succes comun!
condițiile restrictive. Din coloana status reiese dacă valoarea reală (calculată prin funcția SUMPRODUCT() și aflată în partea stângă a inegalității) diferă sau nu de condiția restrictivă dată de noi. În caz de diferență vedem inscripția abundent (sau echivalent), iar în caz de egalitate, inscripția exact (sau echivalent). Ultima coloană este diferența, aici putem vedea cu cât diferă valoarea reală de valoarea restrictivă dată de noi. De exemplu, în cazul numărului de calorii consumate, 540 este consumul real, dar limita maximă admisă este 600, deci ne aflăm confortabil (bıven) în interiorul limitei, rezerva fiind de 60 de grame.
Analiza raportului de senzitivitate (fig. 143).
Fig. 143.: Raportul de senzitivitate Solver 182
Două țări, un scop, succes comun!
Raportul de senzitivitate este mult mai informativ pentru noi decât Raportul privind rezultatul. În acest raport obținem informații despre senzitivitatea rezultatului optim la variația diferiților coeficienți ai modelului.
Și aici vom analiza separat celulele care se modifică și condițiile restrictive.
În partea referitoare la celulele care se modifică vom studia măsura în care variațiile de diferite amplitudini ale coeficienților funcției țintă influențează valoarea funcției țintă. Să ne raportăm la exemplul Csillei: dacă notele acordate de Csilla pentru napolitană și pentru înghețată se modifică, cum se schimbă cantitatea de napolitane și de înghețată în compoziția zilnică și cum se schimbă numărul total de puncte? Pentru a putea interpreta cele de mai sus, să studiem tabelul.
În coloana Ultima valoare finală găsim rezolvarea modelului, în coloana Celula, referințele arată exact, despre ce fel de valori este vorba.
Din coloana Cheltuiala redusă aflăm de ce, eventual, o variabilă n-a fost inclusă în rezolvarea optimă și în ce condiții ar putea fi inclusă astfel încât valoarea funcției țintă să rămână neschimbată. Din punct de vedere matematic aceasta înseamnă că la valoarea obținută prin scăderea valorii corespunzătoare din
183
Două țări, un scop, succes comun!
coloana coeficient țintă, a valorii corespunzătoare aflată în coloana Cheltuiala redusă, variabila poate fi inclusă în rezolvarea optimă3. În cazul Csillei ambele variabile apar în rezolvare, astfel cheltuiala redusă este 0. În coloana Coeficient țintă figurează coeficienții de funcție țintă ai variabilelor respective. În cazul nostru acestea sunt notele acordate de Csilla, fiindcă pe scara ei de gusturi, napolitana cu ciocolată merită 6 puncte, iar înghețata, 9 puncte.
Mai întâlnim două coloane: Creșterea admisibilăși Scăderea admisibilă. Semnificația ambelor coloane are legătură cu coloana Coeficientul funcției țintă. La evaluare, adunăm Creșterea admisibilă și scădem Scăderea admisibilă din coeficienții funcției țintă. Astfel obținem un interval al coeficientului funcției țintă pentru fiecare variabilă (fig. 144.).
3
Am aplicat scăderea fiindcă Excel vizualizează cheltuiala redusă cu semnul corect. Aceasta înseamnă că la aplicația de maxim, aceasta va fi negativă, iar la aplicația de minim va fi pozitivă.
184
Două țări, un scop, succes comun!
Fig. 144.: Calculul intervalelor coeficienților funcției țintă
De ce e bine să știm aceste lucruri? Când coeficientul funcției țintă variază în interiorul acestui interval, atunci programul optim rămâne neschimbat, adică încompoziția zilnică trebuie să fie mai departe 3 napolitane cu ciocolată și o înghețată, fiindcă valoarea funcției țintă (punctajul total) rămâne în continuare cea mai ridicată.
Conform fig. 144., coeficientul funcției țintă pentru napolitană poate lua valori între 4,5 și plus infinit, în timp ce coeficientul pentru înghețată poate fi cuprins între minus infinit și 12.
Să vedem ce s-ar întâmpla dacă Csillaar acorda napolitanei doar 5 puncte.
185
Două țări, un scop, succes comun!
Până la 4,5 puncte, compoziția de 3 napolitane și o înghețată ar fi cea optimă, deci Csilla ar consuma aceleași dulciuri. Dar fiecare napolitană a obținut doar 5 puncte, cu un punct mai puțin decât valoarea din model, astfel gradul de satisfacție al Csillei va scădea pentru cele 3 napolitane cu câte 1 punct, respectiv cu 3 puncte; cu atât va scădea valoarea funcției-țintă (tabelul 24.).
Tabelul 24.: Analiza variației coeficienților funcției țintă Valoare finală
Punctaj prezent
Punctaj ulterior
Limita inferioară
Napolitană
3
6
5
4,5
Înghețată
1
9
9
-1E+30
Partea a doua a raportului de senzitivitate servește la analiza condițiilor restrictive (fig. 143.). Ultima valoare finală redă cantitățile efectiv utilizate, valorile adreselor de celule din model care apar încoloana Celule. La introducerea condițiilor restrictive aceasta a fost partea stângă a condițiilor (fig. 139.). Urmează Shadow (prețurile din umbră), apoi coloana Partea dreaptă a condițiilor. Vom găsi prețdin umbră în acele rânduri unde valoarea finală și partea dreaptă a condițiilor coincid, adică acolo unde, în raportul despre rezultate, apare valoarea de stareîntocmai. Prețul din umbră câștigă importanță atunci când vrem să modificăm partea dreaptă a condițiilor, adică vrem să modificăm limitele. Prețul din umbră exprimă modificarea valorii funcției țintă pentru cazul în care modificăm limita cu o unitate4. 4
Aici ne ocupăm numai de interpretarea prețului din umbră. Dacă cititorul este interesat de cunoașterea mai aprofundată a programării lineare, îi recomandăm cărțile de cercetare operațională din bibliografia de la sfârșitul cărții.
186
Două țări, un scop, succes comun!
Găsim prețuri din umbră în două locuri: −
la consumul de grăsimi (1,2) și la
−
minimul pentru înghețată (-3).
Să interpretăm mai întâi prețul din umbră al grăsimilor. Cantitatea de grăsimi constituie o limită superioară. Aceasta înseamnă că dacă atingem acest nivel maxim, valoarea funcției țintă nu mai poate crește datorită faptului că nu putem consuma o cantitate mai mare de grăsimi. Dacă am putea consuma cu 1 gram mai multe grăsimi, am putea mări cu 1,2 valoarea punctajului total.
În cazul înghețatei, situația este tocmai inversă. Csilla a spus că dorește să mănânce minimum o înghețată pe zi. Pe această bază, aceasta a și fost inclusă în compoziția optimă, dar prețul este că punctajul maxim actual a scăzut cu 3 puncte față de situația în care Csilla nu ar fi cerut înghețată. Și de aici se vede că în cazul în care problema de programare lineară este una de maximizare, atunci, în cazul limitei superioare, putem crește valoarea funcției țintă prin creșterea cantitativă a factorului respectiv, iar în cazul limitei inferioare, prin scăderea acestuia. În problemele de minim, în mod logic situația este inversă, dar atunci scopul nostru este scăderea valorii funcției țintă.
Și aici găsim creștere admisibilă și scădere admisibilă, la fel ca în tabelul celulelor care se modifică. Ambele pot fi corelate cu coloana Partea dreaptă a condițiilor. În mod logic, aici putem calcula un interval referitor la limite. Dacă
187
Două țări, un scop, succes comun!
modificăm cantitățile din factorii respectivi în interiorul acestui interval, atunci prețul din umbră rămâne valabil.
Pentru cele de mai sus să vedem un caz din problema Csillei. Limita superioară stabilită pentru grăsimi este de 25 g. Creșterea admisibilă este de 2,5 g, iar scăderea admisibilă este de 3 g. Deci prețul din umbră de 1,2 grame este valabil între valorile limită pentru grăsime: 22-27,5 grame (tabelul 25.).
Tabelul 25.: Evaluarea referitoare la grăsimi Finală Valoare
Redus Cost
25
1,2
Grăsime
Obiectiv Activabil Activabil Coeficient Mărire Micşorare 25
2,5
3
I. modificare Să scădem limita superioară pentru grăsimi și să urmărim ce se întâmplă. Întrucât în cazul grăsimilor am stabilit o limită superioară, scăderea aduce după sine, scăderea prevăzută a valorii funcției țintă. Am redus cantitatea de grăsimi cu 2 grame și punctajul total a scăzut la 24,6, care este 2·1,2 grame, adică 2,4 grame. Scăderea admisibilă a scăzut la unu, creșterea admisibilă a crescut cu 2 și prețul din umbră a rămas neschimbat. De fapt ne puteam aștepta la aceste rezultate, fiindcă am efectuat modificarea în interiorul intervalului valorilor limită permise.
A II- a modificare Să ridicăm limita superioară pentru grăsimi cu 3 grame. După creștere, punctajul total a crescut de la 27 la 30 față de modelul inițial, ceea ce se explică 188
Două țări, un scop, succes comun!
prin produsul 2,5·1,2. Consumul real de grăsimi a devenit 27,5, adică cu 0,5 grame mai puțin decât limita dată de noi. Prețul din umbră – pentru că nu mai utilizăm 100% cantitatea admisă de grăsimi – a devenit zero. Scăderea admisă este 0,5 grame, ceea ce este normal fiindcă intervalul valabil s-a extins până acolo.
Fig. 146. oferă un răsuns și la întrebarea: de ce prețul din umbră este valabil numai până la creșterea admisibilă. După ce în cazul grăsimilor am atins limita superioară de 27,5, o altă limită, numărul de calorii, a fost utilizată în procent de 100%, deci a intervenit un nou factor de limitare a creșterii valorii funcției țintă.
189
Două țări, un scop, succes comun!
Fig. 145. Rezultatul modelului și prețurile din umbră după prima modificare
190
Două țări, un scop, succes comun!
Fig. 146. Rezultatul modelului și prețurile din umbră după cea de a doua modificare
Analiza raportului despre Limite (fig. 147.):
Pe de o parte, raportul despre limite arată programul optim, cu valoarea aferentă a funcției țintă, pe de altă parte arată intervalul în care se pot mișca valorile
191
Două țări, un scop, succes comun!
finale ale variabilelor, luând în considerare condițiile restrictive și consumurile specifice.
Fig. 147.: Raportul Limite
Compoziția optimă a consumului zilnic de dulciuri al Csillei este de 1 înghețată și 3 napolitane cu ciocolată, ceea ce putem citi din coloana Valoare finală din cea de a doua parte a raportului. Punctajul maxim corespunzător este 27, valoare arătată în coloana Valoare finală din prima parte a raportului. Coloanele din partea a doua sunt Limita inferioară cu Rezultatul țintă corespunzător, respectiv Limita superioară, cu Rezultatul țintă aferent.
În cazul napolitanei, limita inferioară este de 2,4 bucăți, căreia îi corespunde o valoare maximă realizabilă a funcției țintă de23,4, pe când în cazul înghețatei este 1, iar aici valoarea funcției țintă este 27. Aceasta înseamnă că, dacă
192
Două țări, un scop, succes comun!
urmărim valoarea maximă a funcției țintă, numărul de napolitane nu poate fi mai mic de 2,4 bucăți fiindcă trebuie satisfăcută limita minimă referitoare la cantitatea minimă zilnică (120 g) și trebuie să avem minimum o înghețată. Bineînțeles, cel mai bine ar fi să fie trei bucăți de înghețată în combinație, fiindcă astfel valoarea funcției țintă ar fi cea mai mare.
În cazul înghețatei corespund limita inferioară și limita superioară, cât și valoarea aferentă a funcției țintă, fiindcă, așa cum s-a văzut din raportul de senzitivitate, nu este indicat să se includă mai multe în combinație, întrucât ar duce la scăderea drastică a valorii funcției țintă.
Am văzut toate cele trei rapoarte. Este evident că încărcătura informațională maximă o are raportul de senzitivitate, pe când raportul privind rezultatele și cel privind limitele oferă doar o rapidă trecere în revistă a rezultatului.
3.3.3.2. Aplicații Solver
Aplicațiile economice, comerciale și financiare ale Solver sunt extrem de variate. Cu ajutorul exemplelor următoare dorim să ilustrăm acest lucru.
Exemplu 49.: Optimizarea concomitentă a structurii de
producție și a
aprovizionării cu materii prime O întreprindere produce 3 produse (T) din 2 materii prime (A) cu ajutorul a 2 mașini (G). Consumurile specifice pentru
193
Două țări, un scop, succes comun!
fabricarea produselor și consumurile specifice de ore-mașină sunt redate în tabelul 26.
Prețul de achiziție (A1) al materiei prime 1 este 30 Ft/unitate, iar al celei de a doua (A2) este 50 Ft/unitate.
Capacitatea disponibilă a mașinii nr. 1 este de 1500 h/an, iar a celei de a doua: 1100 h/an; în ambele cazuri, costul orei-mașină este de 100 Ft.
Tabelul 26. Consumuri specifice de materie primă și de ore-mașină UM: buc., h A1
A2
G1
G2
T1
2
1
0,5
0,3
T2
1
5
0,9
0,4
T3
4
0
0
1,2
Prin utilizarea produselor 2 și 3 (consumând 1 bucată din produsul 2 și 2 bucăți din produsul 3) poate fi realizat un produs de lux, pentru care consumul specific de ore-mașină este de 0,9 de la prima mașină și 1 de la mașina 2. Și în acest caz, prețul orei-mașină este de 100 Ft. Să presupunem că restul cheltuielilor sunt cheltuieli fixe.
Prețurile de vânzare:
194
Două țări, un scop, succes comun!
Produsul 1.
450 Ft/buc
Produsul 2.
560 Ft/buc
Produsul 3.
390 Ft/buc
Produsul 4. 1400 Ft/buc Să se elaboreze un model de programare lineară prin care să se stabilească pentru fiecare materie primă, ce cantitate trebuie cumpărată și ce structură de producție trebuie configurată pentru ca marja brută (Gross Margin) să fie maximă.
Ca prim pas trebuie să stabilim variabilele modelului. Variabilele le vom despărți în trei grupe: −
Variabile de valorificare, acele produse pe care vrem să le vindem. Aici vom avea trei produse de bază și un produs de lux.
−
Semifabricate – acea parte din produsele 2 și 3 care nu vor fi valorificate direct, ci vor fi integrate în produsul 4.
−
Materii prime.
Pe această bază, variabilele noastre vor fi: x1
cantitatea din produsul 1., fabricată într-un an pentru valorificare
x2
cantitatea din produsul 2., fabricată într-un an pentru valorificare
x21
cantitatea din produsul 2., fabricată într-un an pentru prelucrare ulterioară
x3
cantitatea din produsul 3., fabricată într-un an pentru valorificare
x31
cantitatea din produsul 3., fabricată într-un an pentru prelucrare ulterioară 195
Două țări, un scop, succes comun!
x4
cantitatea fabricată anual din produsul 4. (produs de lux)
A1
cantitatea din materia primă A1 pe care intenționăm să o achizițion
A2
cantitatea din materia primă A2 pe care intenționăm să o achiziționăm
Primul pas în
elaborarea modelului (fig. 148.) este stabilirea consumurilor
specifice de materii prime și stabilirea consumului specific de ore-mașină pe produse. În domeniul B5:G8 înscriem necesarul de materie primă și consumul specific de ore-mașină ale produselor. Se poate vedea că materiile prime (A1, A2) sunt considerate și resurse, și în celulele H5 și I6 a apărut -1.
Pentru a înțelege acestea, să vedem ecuația de bilanț a materiei prime A1: 2x1 + x2 + x21 + 4 x3 + 4x31 - A1 ≤ 0 Deci prima dată luăm necesarul pentru producție, pe care îl comparăm cu cantitatea de materie primă (-A1); rezultatul trebuie să fie mai puțin sau egal cu zero. Prin aceasta vom reuși să nu consumăm mai multă materie primă decât ne stă la dispoziție, dar acum optimizăm cantitatea de materie primă împreună cu structura de producție.
În rândurile 9. și 10. dăm consumul din x2și x3 pentru fabricarea x4. Într-un produs x4 vor fi incluse 1 produs x2 și două produse x3. Ecuațiile de bilanț: x21 = x4 x31 = 2x4
Rearanjându-le, vom obține forma din model.
196
Două țări, un scop, succes comun!
În pasul următor trebuie să stabilim obiectivul optimizării, adică trebuie să știm care este conținutul economic al funcției țintă. Cunoaștem costurile variabile specifice (ore mașină și costurile cu materia primă) și prețul de vânzare al produselor. Pornind de aici este indicat ca diferitele produse să fie comparate sub aspectul marjei brute. Aceasta nu înseamnă ca pentru fiecare coeficient al funcției țintă să calculăm marja brută, ci înseamnă ca valoarea din celula J14 să fie marja brută totală a întreprinderii.
Mai întâi calculăm costurile variabile în rândul 13. Acestea vor fi seriile orelormașină specifice și ale consumurilor specifice de materii prime în cazul variabilelor de valorificare, iar în cazul materiilor prime vor fi costurile de achiziție ale materiilor prime. Coeficientul funcției țintă va fi diferența dintre prețul de vânzare și costurile variabile astfel calculate. Deci coeficientul de funcție-țintă al variabilelor de valorificare va fi marginea brută fără materii prime;respectiv în cazul semifabricatelor aceasta înseamnă costurile variabile de fabricație fără materie primă cu semn negativ, iar în cazul materiilor prime, costul de achiziție al materiilor prime cu semn negativ. Dacă însumăm toate acestea în celula J14, se poate vedea cu ușurință că urmărim valoarea maximă a marjei brute, adică o strategie optimă de achiziție și de fabricație pentru care marja brută a întreprinderii este maximă.
Datele propriu-zise de consum le calculăm în celula J5 cu ajutorul funcției =SUMPRODUCT(B5:I5; $B$15:$I$15) apoi calculăm aceasta în domeniul J6:J10 și mai departe în celula J14.
197
Două țări, un scop, succes comun!
Fig. 148.: Modelul de producție în Excel
După aceasta setăm parametrii Solver (fig. 149.), selectăm nonnegativitatea și presupunerea modelului linear și rezolvăm modelul.
Fig. 149. Setarea parametrilor Solver în problema de producție 198
Două țări, un scop, succes comun!
După optimizare vom fabrica pentru vânzare produsele x1, și
x4, iar
semifabricatele x21 és x31, pentru a fi incluse în x4. Pentru a putea realiza planul de producție, din prima materie primă trebuie să cumpărăm6.132 de bucăți, iar din a doua, 2.956. Marja brută va fi de 815.588 Ft, iar orele-mașină ale ambelor mașini le vom utiliza în totalitate.
Capacitățile mașinilor, utilizate în întregime, le putem studia mai departe în raportul de senzitivitate (fig. 151.). Prețul din umbră aferent utilajului G1 este de 73,5 Ft, iar pentru G2, 177,9 Ft. Dacă examinăm creșterea admisibilă, se poate vedea că în cazul ambelor mașini există posibilități reale
de creștere a
capacității.
Fig. 150.: Rezolvarea problemei de producție
199
Două țări, un scop, succes comun!
Problemă de logistică
În foarte multe cazuri, o problemă practică poate fi analizată cel mai ușor cu ajutorul reprezentărilor grafice sau sub formă de rețea. Și acest fel de probleme poate fi abordat prin modele de programare lineară, de aceea ele pot fi rezolvate eficient cu Solver. În aplicația noastră prezentăm o problemă complexă de transport.
Fig. 151.: Raportul de senzitivitate al modelului de producție
Exemplu 50.: O întreprindere de fabricare pieselor de schimb pentru a mașini agricole își desfășoară activitatea productivă în două sedii: la Budapesta și la 200
Două țări, un scop, succes comun!
Gyır. Desfacerea este asigurată printr-o firmă de comerț care deține 8 depozite. În rețeaua de mai jos sunt reprezentate traseele de transport, cheltuielile de transport și cererea lunară (fig. 152).
Să se elaboreze un plan de rute de transport care să satisfacă necesitățile cu cheltuieli minime.
Cum să interpretăm rețeaua? În imagine,cercurile reprezintă noduri (centre), iar săgețile reprezintă rutele (inclusiv sensul). Lângă centre am înscris stocul/ necesarul corespunzător. Pe săgeți sunt înscrise cheltuielile de transport corespunzătoare unității de produs pe relația respectivă. Astfel de exemplu, la nodul nr. 4, Szolnok, cererea este de 400 de unități, marfa vine dinspre Budapesta cu cheltuieli de transport de 38 Ft/unitate și de aici poate pleca mai departe la Debrecen, cu 34 Ft/Unitate și la Miskolc, cu 50 Ft/unitate.
Așa cum am procedat și în aplicația anterioară, prima dată trebuie definite variabilele modelului. Pentru aceasta trebuie să clarificăm ce înțelegem exact prin problema de rezolvat: Scopul modelului tip rețea este să determinăm ce cantități să comandăm/să transportăm pe anumite rute pentru a avea cheltuieli totale cât mai mici.
Din enunț reiese clar că variabilele vor fi săgețile, respectiv cantitățile de transportat pe săgeți.
201
Două țări, un scop, succes comun!
Fig. 152.: Traseele de transport ale întreprinderii producătoare de piese de schimb.
Fie xij cantitatea transportată pe săgeata de la nodul i la nodul j, iar cij, costul unitar aferent săgeții respective, atunci costul total de transport pe întreaga rețea și, concomitent, funcția țintă a modelului va fi: ∑i∑jcijxij→MIN! Întrebarea care rămâne este: cum putem asigura necesarul pentru toate nodurile. Pentru aceasta aplicăm regulile echilibrului de flux, conform cărora:
Dacă în rețea
Condiție aplicabilă de bilanț
Stocul total>necesarul total
atunci
intrări – ieșiri>= stoc sau necesar
Stocul total
atunci
intrări – ieșiri <= stoc sau necesar
atunci
intrări – ieșiri = stoc sau necesar
Stocul total = necesarul total
202
Două țări, un scop, succes comun!
Intrările în și ieșirile din noduri se mai numesc și flux net. Pe parcursul calculelor vom avea în vedere cantitățile totale care se deplasează pe săgețile îndreptate cu vârful către un anumit nod, acestea vor fi intrările totale; respectiv cantitățile totale care se deplasează pe săgețile cu vârful îndreptat în afară, acestea vor fi ieșirile totale. În nodurile unde există stoc net, de exemplu la Budapesta și la Gyır, cantitatea din dreptul nodului este negativă. Astfel, stocul total din sistem se obține prin însumarea valorilor negative, iar necesarul total se obține prin însumarea valorilor pozitive.
De acum întrebarea este doar: cum să reprezentăm modelul de rețea astfel încât să fie rezolvabil și cu Solver?
Pentru reprezentare, prima dată vom specifica nodurile. (Tabelul 27.) Fiecărui nod îi atribuim numărul curent și denumirea, dar trebuie să-i mai alocăm fluxul net, relația și stocul/necesarul, fiindcă aceste elemente vor fi necesare în Solver pentru determinarea condițiilor restrictive. Datele stoc/necesar din rețea sunt deja stabilite. Am putut stabili și relația, fiindcă stocul total din rețea este de 4500 de unități, necesarul total este de 3000 de unități, astfel, aplicând regulile echilibrului de flux: Fluxul net >= stoc / necesar
Fluxurile nete vor putea fi calculate după terminarea reprezentării săgeților.
203
Două țări, un scop, succes comun!
Tabelul 27.: Nodurile rețelei
1 2 3 4 5 6 7 8 9 10
Noduri Budapest Gyır Székesfehérvár Szolnok Dombóvár Miskolc Debrecen Szeged Nyíregyháza Békéscsaba
Flux net Relația Stoc/Necesar >= -1000 >= -3500 >= 350 >= 400 >= 300 >= 600 >= 300 >= 500 >= 300 >= 250
Pentru reprezentarea săgeților, pe lângă tabelul care conține nodurile vom elabora încă un tabel (nr.28.), în care, în ordinea crescătoare a numărului nodului de pornire, înscriem toate relațiile în coloanele De unde și Unde. Nu este nevoie să se înscrie numele orașelor, fiindcă acestea pot fi introduse din tabelul cu nodurile, utilizând funcția VLOOKUP(). Și acest tabel l-am întocmit astfel încât să aibă loc și construcția modelului, de aceea prima coloană va fi Expediere, unde se înscriu cantitățile transportate pe săgeți, iar ultima coloană conține cheltuielile unitare de transport ale relațiilor/rutelor de transport. Costurile totale se determină cu funcția SUMPRODUCT() pentru coloanele Expediere și Cheltuiala: =SUMPRODUCT(L2:L20; G2:G20)
După aceasta mai trebuie calculate fluxurile nete, iar după introducerea parametrilor Solver trebuie rezolvat modelul. 204
Două țări, un scop, succes comun!
Tabelul 28.: Reprezentarea săgeților rețelei
Calculul fluxurilor nete se poate efectua astfel (fig. 152.). Valoarea celulei A2: = SUMIF($J$2:$J$20; A2; $G$2:$G$20) - SUMIF($H$2:$H$20; A2; $G$2:$G$20) Această formulă o calculăm în domeniul A3:A11.
Se observă că pentru calculul fluxurilor de intrare și de ieșire putem utiliza funcția de sumă condiționată SUMIF().
Vârful săgeților care duc într-un anumit nod este întotdeauna numărul de ordine al nodului spre care duc săgețile. Deci, dacă de exemplu ne interesează ce săgeți duc în nodul 3, acestea vor fi x13 și x23. Urmând aceeași logică, pentru calculul
205
Două țări, un scop, succes comun!
fluxului de intrare, domeniul criterial este J2:J20, criteriul este codul nodului, iar domeniul de totalizare este G2:G20.
Fig. 152.: Modelul problemei de transport.
Punctul de pornire al săgeților care ies din nod este întotdeauna numărul de ordine al nodului. Astfel, săgețile x46, și x47 ies din nodul 4. Deci în formulă, domeniul criterial este H2:H20, criteriul este codul nodului.
După calcularea fluxului net rezolvăm modelul cu Solver. Parametrii sunt arătați în fig. 152. și, cu toate că aici nu figurează pe ilustrație, și aici trebuie să setăm opțiunile de nonnegativitate și de presupunere a modelului linear. 206
Două țări, un scop, succes comun!
După rezolvare în domeniul G2:G20 găsim planul optim de transport, pe care îl putem realiza cu 280.750 Ft.
207
Două țări, un scop, succes comun!
4. Automatizarea operațiilor În multe privințe, Excel ne face viața mult mai ușoară. În capitolele anterioare am trecut în revistă, posibilitățile prin utilizarea cărora putem face tabele mai comprehensibile, într-un mod mult mai simplu.
În acest capitol vom vedea ce posibilități există pentru automatizarea diferitelor procedee de editare, destul de laborioase altfel și care se repetă pe parcursul soluționării problemelor, adică să facem ca pentru utilizatorii mai puțin experimentați, un proiect mai complicat în Excel să fie mai ușor și mai plăcut de dus la bun sfârșit. Pentru atingerea acestor deziderate, trebuie să facem cunoștință cu crearea macrourilor. Macroul este o mulțime de comenzi Excel adunate laolaltă, de fapt un program de calculator mai mic, sau listă de comenzi sau de funcții, care se stochează în modulul Visual Basic. Macrourile se stocheză legate de fișier, devin părți ale acestuia (de aceea în caz de viruși pot constitui un pericol).
Instrumentele cele mai importante ale creerii macrourilor sunt cunoașterea limbajului de programare Visual Basic for Application și a obiectelor Excel. Acest lucru poate suna înspăimântător pentru acei care nu au cunoștințe de programare, dar macrouri mai ușoare pot crea și utilizatori Excel relativ neexperimentați. Bineînțeles, de cele mai multe ori pofta vine mâncând, de aceea macrourile o dată create merită analizate în editorul de macrouri și, ulterior, merită chiar dezvoltate.
208
Două țări, un scop, succes comun!
În setarea de bază, Excel 2007 nu vizualizează banda de meniu necesară creerii macrourilor. Acest lucru îl putem obține deschizând fereastra de dialog EXCEL OPTIONS (cu butonul Excel din stânga sus al ecranului). Aici vom găsi categoria Popular, în care bifăm Show Developer tab in the ribbon (fig. 153.)
Fig. 153. Activarea benzii de meniu instrumente de dezvoltare (Developer)
4.1. Automatizarea cu ajutorul macrourilor
Pentru automatizarea operațiunilor repetitive, cu ajutorul Microsoft Office Excel putem crea macrouri în următoarele moduri: −
Cel mai simplu mod dea crea un macro este ca un șir de operații să fie înregistrat cu Record Macro.
−
În plus putem înființa propriul nostru program de macrouri cu ajutorul Visual Basic Editor, în limbajul Microsoft Visual Basic, 209
Două țări, un scop, succes comun!
−
Sau putem copia într-un nou macro, un macro existent sau o parte a acestuia.
După crearea câte unui macro putem să-i atașăm un obiect (de exemplu buton de instrumentar, element de comandă), astfel, făcând clic pe obiectul respectiv, putem rula macroul. Dacă macroul nu ne mai este necesar, îl putem șterge.
4.1.1. Inregistrarea unui macro
Să facem clic pe banda de meniu DEVELOPER, în câmpul CODE, pe butonul Record Macro (fig. 154.), sau din banda de meniu VIEW, pe comanda MACROS (fig. 155.).
Fig. 154.: Comanda Record Macro
În fereastra Record Macro, care se deschide, în câmpul Macro Name înscriem denumirea macroului (fig. 156.). Primul caracter al numelui unui macro trebuie să fie o literă. Restul caracterelor pot fi litere, cifre sau sublinieri. Numele macroului nu poate să conțină spații goale; semnul de subliniere poate funcționa și ca cratimă (liniuță despărțitoare). Dacă numele dat este o adresă de celulă, programul returnează un mesaj de eroare conform căruia numele macroului nu este valabil. 210
Două țări, un scop, succes comun!
Fig. 155.: Inregistrarea unui macro în banda de meniu VIEW
Fig. 156. Fereastra de pornire a înregistrării unui macro
După aceasta avem posibilitatea să atașăm macroului creat, o combinație de taste utilizabilă cu tasta CTRL. Pentru aceasta, în câmpul Shortcut key trebuie să inserăm litera majusculă sau minusculă dorită.
Atât timp cât fișierul care conține macroul este deschis, comanda rapidă de pe tastatură suprascrie toate comenzile rapide echivalente, intrinseci pentru Excel. 211
Două țări, un scop, succes comun!
În câmpul Store Macro in desemnăm fișierul în care dorim să stocăm macroul: −
Dacă vrem să utilizăm macroul numai pentru automatizarea operațiilor din fișierul actual, selectăm opțiunea This Workbook.
−
Dacă dorim ca în timpul utilizării Excel să avem acces permanent la macro, selectăm opțiunea Personal macro workbook5.
Dacă vrem să introducem și descrierea macroului, facem aceasta în câmpul Description. După aceea apăsăm tasta Ok și astfel pornim înregistrarea macroului.
Să efectuăm operațiile pe care vrem să le înregistrăm. Înainte de a începe înregisrtrarea, să ne gândim foarte bine ce dorim să facem, fiindcă din momentul începerii înregistrării, Excel va memora totul.
După încheierea înregistrării macroului, în banda de meniu Developer acționăm butonul End Record
, sau în banda de meniu View acționăm același buton
.
Examplu 51.: Se întâmplă adesea că pe o foaie de lucru vrem să selectăm un tabel în întregime. Avem două posibilități: ori selectăm prin tragerea mouse-ului – treabă care poate fi destul de greoaie în cazul tabelelor mari, mai ales dacă trebuie să repetăm operația de mai multe ori – ori utilizăm cealaltă posibilitate, pusă la dispoziție de către Excel 2007. Cu ajutorul funcțiunii de selecție dirijată
5
Dacă alegem valoarea Personal Macro Workbook, Excel creează un fișier individual ascuns sub numele Personal.xlsb (dacă încă nu a fost creat), iar macroul nou creat îl va salva aici.
212
Două țări, un scop, succes comun!
putem realiza aceasta, iar cu un macro o putem automatiza. Deci să creem un macro care să selecteze domeniul de date din jurul celulei actuale: −
Să deschidem un fișier în care sunt tabele.
−
Să selectăm o celulă în care se găsesc date.
−
Să facem clic de DEVELOPER – CODE – Record Macro.
−
În fereastra Record Macro să efectuăm setările inițiale. Să dăm macroului denumirea Selector, comanda rapidă să fie CTRL+a. Să-l poziționăm în fișierul în carene aflăm și să descriem pe scurt ce face macroul, apoi să facem clic pe butonul OK (fig. 157.).
Fig. 157.: Setările inițiale ale înregistrării unui macro
−
Jos, în bara de stare apare butonul de încheiere a înregistrării
−
În cele ce urmează, înregistrăm operația pe care dorim să o automatizăm.
.
Să fim atenți ca în timpul înregistrării să nu facem clicuri pe foaia de lucru, fiindcă se înregistrează! 213
Două țări, un scop, succes comun!
−
Facem clic în banda de meniu HOME, în grupul EDITING pe butonul Find&Select (fig. 158).
Fig. 158.: Butonul Find&Select −
În meniul care se deschide, alegem butonul Go to Special (Irányított kijelölés). (fig. 159.)
Fig. 159.: Fereastra selecției dirijate −
În fereastra care se deschide, facem clic pe butonul Current Region, apoi pe OK. (fig. 160.)
214
Două țări, un scop, succes comun!
Fig. 160.: Operații cu macrouri −
Facem clic pe butonul Încheierea înregistrării
, în grupul CODE al
benzii DEVELOPER sau în partea stângă a barei de stare.
4.1.2. Rularea unui macro
Există mai multe posibilități de a rula un macro. Acesta poate fi pornit cu ajutorul comenzii de meniu. În funcție de setări, poate fi pornit din tastatură cu o combinație CTRL, cu un buton din meniul de instrumente sau făcând clic pe un obiect, o imagine sau un element de comandă. De asemenea putem seta ca macroul să se deruleze automat la deschiderea fișierului.
215
Două țări, un scop, succes comun!
1.
Rularea macroului din fereastra MACRO −
Deschidem fișierul care conține macroul.
−
Facem clic de DEVELOPER – CODE – Record Macro (fig. 154.)
−
În câmpul fereastra Macros, în câmpul Macro Name facem clic pe numele macroului pe care vrem să-l rulăm, apoi pe butonul Run6.
Dacă am introdus o comandă rapidă (din taste), o putem folosi și pe aceasta pentru pornirea rulării macroului. 2.
Rularea unui macro din instrumentarul de acces rapid (Quick Access Toolbar) Putem include macroul nou creat și în instrumentarul de acces rapid, astfel: Pe foaia EXCEL OPTIONS facem clic pe comanda Customize, apoi din lista Choose commandsfrom selectăm elementul Macros. Căutăm macroul dorit în listă și îl includem în
instrumentar (Quick Access
Toolbar) (fig. 161). După aceasta, iconița macroului apare în instrumentarul de acces rapid. Iconița macroului poate fi modificată după plac, dacă după includerea în instrumentar facem clic pe comanda de modificare(Modify) (fig. 163). 3.
Rularea unui macro cu ajutorul unui obiect grafic Putem conecta pornirea macrourilor cu vreun obiect grafic, de exemplu o imagine, un element WordArt, o figură sau un buton de comandă. −
Ca prim pas să facem clic pe obiectul respectiv cu butonul din dreapta al mouse-ului, apoi, din meniul local care apare, facem clic pe comanda Asign Macro (fig. 164).
6
Putem întrerupe rularea macroului prin acționarea tastei ESC.
216
Două țări, un scop, succes comun!
−
În fereastra care apare avem două opțiuni: o
Acceptând sau suprascriind numele de macro apărut, asociem obiectului un nou macro. Făcând clic pe comanda Record putem înregistra noul macro.
o
Selectăm dintre macrourile existente, pe acela care să fie atribuit la obiect.
Fig. 161.: Includerea unui macro în instrumentarul de acces rapid
În aceeași fereastră este posibilă editarea macroului prin clic pe butonul Edit. După clic apare fereastra Visual Basic Editor, iar codul macroului devine editabil (fig. 165.). 217
Două țări, un scop, succes comun!
Fig. 162.: Macro inclus în instrumentarul de acces rapid
Fig. 163.: Modificarea iconiței macroului
218
Două țări, un scop, succes comun!
Fig. 164.: Atașarea la un macro (Asign macro) în meniul local
Fig. 165.: Atribuirea unul macro 219
Două țări, un scop, succes comun!
4.1.3. Editarea macrourilor
Înaintea editării macrourilor trebuie să facem cunoștință cu programul Visual Basic Editor, cu ajutorul căruia pot fi scrise și editate macrourile atașate la fișierele Microsoft Office Excel.
În această carte nu ne ocupăm de limbajul Visual Basic, ci doar cu acele cunoștințe strict necesare pentru editareși rulare.
Putem accesa editarea macrourilor din mai multe puncte. Să facem clic pe Record Macro din câmpul CODE al benzii de meniu DEVELOPER, sau în banda de meniu VIEW, pe comanda Macros, să selectăm macroul pe care vrem să-l edităm și să facem clic pe comanda Edit.
Apare fereastra Visual Basic (fig. 166.).
Editorul Visual Basic se deschide într-o fereastră nouă cu meniu și instrumentar propriu. În meniul View putem conecta ferestrele pe care le vedem și în imaginea de mai sus: o
Project Explorer: în această fereastră vedem elementele tuturor fișierelor deschise într-o structură arborescentă. Dacă avem deschis un singur fișier și încă nu am scris macro, avem doar un trunchi: VBAProject (denumirea fișierului). Din acest trunchi se deschide biblioteca Microsoft Excel Objects, care conține, câte una,și între paranteze, foile de lucru ale fișierului cu denumirile date de noi și un obiect numit This Workbook,
220
Două țări, un scop, succes comun!
care înseamnă întregul fișier împreună. Din meniul Insert sau din instrumentar putem insera și alte elemente în fișier, care de asemenea se vor aranja în biblioteci:
Fig. 166.: Fereastra de editare și instrumentarul Visual Basic
o
Modules: dacă inserăm un modul, se creează instantaneu biblioteca denumită Modules și de aici încolo fiecare model inserat va intra aici.
o
Forms: dacă inserăm un UserForm, apare instantaneu biblioteca Forms și de aici încolo fiecare form inserat de noi va intra aici.
o
Cele trei iconițe din partea de sus a ferestrei sunt: •
View Code: afișează codul elementului ales din listă în fereastra din dreapta
•
View Object: arată obiectul ales din listă
221
Două țări, un scop, succes comun!
•
Toggle Folders: ascunde structura de mape prezentat mai sus și ca urmare, obiectele vor apărea ”în vrac”.
o
Properties Window: arată întotdeauna proprietățile obiectului selectat, asemănător cu fereastra Prpoerties cunoscută în capitolul precedent.
Putem scrie macrouri pentru fiecare element listat în fereastra Project Explorer. Dacă facem dublu clic pe elementul ales din fereastră, atunci în partea dreaptă, pe suprafața cenușie apare o nouă fereastră în care se pot vedea macrourile aferente elementului dat,respectiv aici pot fi scrise altele.
Trebuie să dăm nume fiecărui macro. Numele trebuie să conste într-un singur cuvânt, nu poate începe cu o cifră și nu poate conține majoritatea semnelor de punctuație. Datorită compatibilității cu celelalte versiuni Windows, utilizarea literelor cu diacritice nu este recomandată.Ca nume, nu se pot utiliza cuvinte deja ocupateca și cuvinte-cheie din Visual Basic, fiindcă pot produce încurcături. Macrourile se salvează împreună cu fișierul.
4.1.4. Crearea macrourilor cu ajutorul Microsoft Visual Basic
În grupul CODE din banda de meniu DEVELOPER să facem clic pe butonul Visual Basic. Dacă este necesar, să utilizăm comanda Module din meniul Insert. Pentru fiecare foaie a fișierului se creează automat un modul. Să înscriem sau să copiem codul pe care vrem să-l utilizăm în fereastra de cod a modulului. 222
Două țări, un scop, succes comun!
Dacă dorim să rulăm macroul din fereastra modulului, acționăm tasta F5.
După încheierea scrierii macroului, pentru reîntoarcerea în aplicația Microsoft Excel, alegem comanda Close and Return to Microsoft Excel din meniul File.
4.1.5. Ștergerea unui macro
Pentru ștergerea macrourilor, în grupul CODE din banda de meniu DEVELOPER să facem clic pe butonul Record Macro, sau pe comanda Macros din banda de meniu VIEW. Selectăm macroul pe care dorim să-l ștergem și facem clic pe comanda Delete (ștergere).
4.2. Protecție în cazul macrourilor
În Microsoft Office Excel, cu ajutorul setărilor de protecție putem stabili ce să se întâmple dacă deschidem un fișier care conține macrouri. De exemplu putem stabili să fie rulate numai acele macrouri care au fost validate prin semnătura digitală a unui dezvoltator de macrouri care figurează pe lista surselor în care avem încredere.
În cele ce urmează vom trece în revistă posibilitățile de setare de protecție în cazul macrourilor și arătăm efectele acestora. Indiferent de setări, dacă avem un astfel de program de căutare a virușilor instalat pe calculator, înainte de a
223
Două țări, un scop, succes comun!
deschide programul, acesta verifică fișierul care conține macrouri, căutând viruși cunoscuți.
Setările de protecție legată de macrouri pot fi modificate din mai multe locuri: Din centrul de protecție a datelor (butonul Microsoft Office
o
,
butonul
EXCEL OPTIONS, categoria Trust Center, butonul Trust Center Settings, categoria Macro Settings.
Setare macrouri
Scop
Blocarea tuturor
Această setare se utilizează când nu avem încredere
macrourilor fără
în macrouri. În acest caz, aplicația blochează
avertizare
macrourile incluse în documente și alarmele de protecție legate de ele. Dacă avem documente care conțin macrouri de încredere, dar nesemnate, le putem transfera într-un loc sigur. Documentele stocate în locuri sigure pot fi utilizate fără a fi verificate de sistemul de siguranță al centrului de protecție a datelor.
Blocarea tuturor
Aceasta este setarea de bază. Se utilizează când
macrourilor cu
dorim să blocăm rularea macrourilor dar, în același
avertizare
timp, dorim să primim și alertă de siguranță despre existența macrourilor. Astfel putem decide de la caz la caz dacă autorizăm macrourile respective.
224
Două țări, un scop, succes comun!
Setare macrouri
Scop
Blocarea tuturor
Aceasta este o setare asemănătoare cu Blocarea
macrourilor
cu
tuturor macrourilor cu avertizare, dardacă un
excepția celor cu
macro a fost semnat de o sursă de încredere, acel
semnătură
macro poate fi rulat. Dacă nu am desemnat sursa, nu
digitală
primim avertizare. Astfel putem permite macrourile semnate sau putem avea încredere în sursă. Aplicația blochează macrourile fără semnătură.
Autorizarea
Această setare se utilizează pentru autorizarea
tuturor
temporară a rulării macrourilor. Datorită faptului că
macrourilor
vulnerabilizează calculatorul față de codurile
(nerecomandată,
periculoase, nu recomandăm utilizarea de durată a
fiindcă poate
acestei setări.
permite și rularea unor coduri periculoase) Accesul la
Această setare este pentru programatori.
modelul VBAprojekt object este de încredere
o
Banda de meniu DEVELOPER, grupulCODE, butonulMacro Security.
225
Două țări, un scop, succes comun!
4.3. Întocmirea formularelor
Elementele de comandă pentru întocmirea formularelor pot fi vizualizate prin clic pe butonul Insert din câmpul CONTROLS al benzii de meniu DEVELOPER (fig. 167.).
În instrumentar vom găsi comenzile deja cunoscute din ferestrele de dialog Windows, pe care le putem plasa pe foaia de lucru.
Fig. 167.: Elementele de comandă pentru formulare și ActiveX
Comenzile care pot fi plasate pe foaie: −
CheckBox ( Dreptunghiul de activare): este un mic dreptunghi cu o inscripție. Poate fi în stare selectată sau neselectată. În stare selectată, în dreptunghi este o bifă. Despre fiecare CheckBox se poate decide individual dacă este selectat sau nu, deci pot fi selectate mai multe concomitent.
−
TextBox (Câmp pentru inscripții): este un câmp în care utilizatorul poate scrie după deconectarea modului de lucru proiectare.
226
Două țări, un scop, succes comun!
−
CommandButton (Buton de comandă): o comandă care poate fi ”apăsată” virtual. Ca efect, pornește un proces.
−
OptionButton (Buton de selecție): este un mic cerc cu inscripție. Poate fi în stare selectată sau neselectată. Starea selectată este semnalizată printrun punct în cerc. Comenzile sunt interconectate. Din mai multe OptionButton doar unul poate fi selectat. Dacă selectăm un altul, selecțiile anterioare se anulează.
−
ListBox: este un câmp care conține o listă, din care utilizatorul poate alege după deconectarea modului proiectare.
−
ComboBox: Ca și în cazul ListBox, și aici putem alege dintre mai multe posibilități. În starea de bază se prezintă ca un câmp gol, cu o săgeară cu vârful în jos. Făcând clic pe săgeată putem vedea elementele listei și putem alege dintre ele. După alegere, lista dispare și rămâne vizibil numai elementul ales. Contrar cazului ListBox, aici și utilizatorul poate scrie în câmp, alegând astfel o valoare pe care lista n-a oferit-o.
−
SpinButton: două săgeți care arată în sens contrar. Cu ajutorul lor putem număra pași egali între limitele date.
−
ScrollBar: este înrudit cu SpinButton, cu diferența că între cele două săgeți există și o fâșie cu ajutorul căreia putem face pași mai mari. Pe fâșie există un glisor pe care utilizatorul îl poate deplasa liber între cele două puncte extreme.
−
Label (Etichetă): cu ajutorul acestei comenzi putem plasa inscripții pe foaia de lucru, pe care, după decuplarea modului proiectare, utilizatorul nu le poate modifica.
227
Două țări, un scop, succes comun!
Câteva însușiri utile pe care le putem vedea și seta în fereastra Properties în ordine alfabetică (Alphabetic) sau pe categorii (Categorized): −
Name: denumirea comenzii, care constă în denumirea generică, ex. Label și un număr de ordine. Comenzile pot fi redenumite, dar pentru utilizatori începători acest lucru nu este recomandat.
−
LinkedCell: această proprietate are o importanță deosebită, fiindcă prin ea putem conecta comanda la celulă. Dacă se modifică valoarea comenzii, se modifică și valoarea celulei și invers. Valoarea comenzii apare în celulă întotdeauna sub formă de text, chiar și atunci când conține număr. Dacă în formulă vrem să ne referim la celula respectivă ca la un număr, atunci trebuie să facem conversia în număr cu ajutorul funcției VALUE. Celula conectată o putem identifica în modul obișnuit în Excel, adică prin litera coloanei și numărul rândului.
−
Caption: aici dăm legenda comenzii care conține legendă.
−
Text: câmpul de intrare nu are legendă, ci text. Acest lucru se setează prin introducerea comenzii Text.
−
Font: Putem stabili tipul de litere pentru control-urile care au legendă sau text.
−
ForeColor: setăm culoarea inscripției comenzilor care au legendă sau text.
−
BackColor: setăm culoarea de fundal a comenzii.
−
Enabled: se poate seta accesibilitatea comenzii. Este o proprietate cu două valori: dacă valoarea este True, atunci comanda poate fi utilizată (de exemplu se poate apăsa butonul, se poate scrie în câmpul de introducere etc.), dacă valoarea este False, atunci comanda nu poate fi utilizată.
228
Două țări, un scop, succes comun!
−
Visible: setează vizibilitatea comenzii. Și aceasta este o proprietate cu două valori: dacă are valoarea True, comanda este vizibilă, iar dacă este False, comanda este invizibilă. Bineînțeles, în modul proiectare totul este vizibil, dar dacă ieșim din proiectare cu iconița prezentată mai sus, atunci comenzile setate pe invizibil dispar.
−
Value: este o proprietate aCheckBox, CommandButtonși OptionButton. Are două valori: dacă comanda este selectată, este True, dacă nu, este False.
−
Picture: este o proprietate a comenzii imagine. Aici putem da calea de acces la imaginea pe care vrem s-o inserăm.
−
ListFillRange: aici se poate stabili domeniul de celule care conține valorile care pot fi alese, în cazul comenzilor care conțin liste. Domeniul de celule se introduce în modul obișnuit în Excel, despărțind adresele celor două celule de capăt prin două puncte.
După conectarea modului proiectareputem alege liber poziția și mărimea comenzilor, cu ajutorul mouse-ului, de la pătratele de redimensionare aflate la colțurile comenzilor, respectiv prin clic pe mijlocul comenzii și tragere cu mouse-ul. Dacă vrem dimensiuni sau poziții exacte, putem da înălțimea (Height) și lățimea (Width) în pixeli.
Cu ajutorul comenzilor putem elabora formulare în al căror fundal, Excel efectuează calcule, dar valorile de pornire le poate introduce utilizatorul în condiții stabilite de noi.
229
Două țări, un scop, succes comun!
Exemplu 52.: Pornind de la datele din tabelul 28., să întocmim un formular de schimb valutar. Pentru utilizare să lucrăm cu ListBox.
Tabelul 28.: Cursuri valutare
Să facem clic pe butonul Insert din câmpul CONTROLS al benzii de meniu DEVELOPER și să alegem elementul de comandă ListBox.
230
Două țări, un scop, succes comun!
Elementul de comandă să-l introducem în celula G1. Să selectăm elmentul de comandă și să-l copiem în celula G2. Astfel se plasează una sub cealaltă, două ferestre care se deschid în jos. (fig. 168.)
Fig. 168.: Elementul de comandă ListBox −
Să completăm domeniul E1:G5 pe baza fig.169.)
−
După aceasta să facem clic dreapta cu mouse-ul în celula G1 pe elementul de comandă ListBox și după apariția meniului local să alegem comanda Format Control. În această listă vrem să alegem valuta pe care dorim să o schimbăm, de aceea, drept domeniu de intrare (Input Range) selectăm domeniul A2:A22. Când alegem un element din listă, acesta este returnat împreună cu numărul său de ordine din domeniu. În câmpul Cell Link introducem celula în care vrem să înscriem acest număr de ordine. În cele ce urmează, această valoare o vom utiliza pentru calcule ulterioare. Cu ajutorul rândurilor care se derulează, setăm câte date dorim să vedem concomitent (fig. 170.). 231
Două țări, un scop, succes comun!
Fig. 169.: Formularul de schimb valutar −
Utilizând valoarea celulei J1 să cerem înscrierea în celula J2, cursul valutei selectate. Pentru aceasta vom utiliza funcția INDEX() . =INDEX(C2:C22;J1;1)/INDEX(B2:B22;J1;1) În domeniul C2:C22 (acestea sunt cursurile) să căutăm elementul al cărui număr de ordine este stocat în celula J1 și o împărțim cu unitatea cantitativă pe care o căutăm în același fel. Trebuie să efectuăm împărțirea pentru ca la calculul cursului să apară deja unitățile de valută.
232
Două țări, un scop, succes comun!
Fig. 170.: Formatarea controlului ListBox −
După aceasta înscriem în celulele O1 și O2 o formulă care să înscrie la direcția schimbului, denumirea valutei selectate în acel moment. De exemplu, dacă valuta selectată este CHF, atunci să înscrie în celulă valoarea HUF – CHF, respectiv CHF – HUF. O1: =INDEX(A2:A22;J1)& - &HUF O2: =HUF& - &INDEX(A2:A22;J1)
−
Acum putem seta și controlul din celula G2. Să facem din nou clic dreapta pe elementul de comandă și în meniul local care apare să alegem comanda Format Control. Input Range va fi domeniul O1:O2, fiindcă aici apare
233
Două țări, un scop, succes comun!
direcția în care dorim să schimbăm valuta. Cell link va fi celula L1 și aici sunt suficiente două rânduri care se derulează.
Fig. 171.: Setările celui de al doilea control −
Mai avem un singur lucru de făcut: să calculăm cantitatea de valută sau de forinți în celula G5. =IF(L1=1;G3*K1;G3/K1) În acest caz, luând în considerare valoarea stocată în celula L1, putem calcula suma primită prin înmulțire sau împărțire.
−
Dorim să vedem exact și în celula E1, în funcție de valuta selectată și de schimbul valutar, ce valută primim. Și acest lucru îl stabilim cu ajutorul unei funcții IF(), astfel:
234
Două țări, un scop, succes comun!
=IF(L1=1;Primit HUF:;Primit&&INDEX(A2:A22;J1)&:) −
Bineînțeles, după încheierea operațiilor ascundem celulele care conțin informații ajutătoare și utilizatorului îi arătăm doar rezultatul final (fig. 172.).
Fig. 172.: Aplicația de schimb valutar
235
Două țări, un scop, succes comun!
BIBLIOGRAFIE 1.
Álló G. (2002): Táblázatkezelés felsıfokon, Mőszaki Könyvkiadó, Budapest
2.
B. Jelen (2002): Guerilla Data analysis Using Microsoft Excel, Holy Macro! Books, Uniontown, Ohio, USA
3.
Bártfai B. (2007): Excel 2007 zsebkönyv, BBS-INFO Kft, Budapest
4.
C. T. Ragsdale (2007): Spreadsheet Modeling and Decision Analysis 5e, Thomson South Western, USA
5.
G. S. Linoff(2008):Data Analysis Using SQL and Excel, Wiley Publishing, Inc., Indianapolis, Indiana
6.
J. Green – S. Bullen – R. Bovey – M. Alexander (2007): Excel® 2007 VBA Programmer’s Reference, Wiley Publishing, Inc., Indianapolis, Indiana
7.
J. Walkenbach (2007): Excel® 2007 Bible, Wiley Publishing, Inc., Indianapolis, Indiana
8.
Kovalcsik G. (2005): Az Excel programozása, ComputerBooks, Budapest
9.
P. Cornell (2007): Excel As Your Database, Springer-Verlag, New York
10. R. Mansfield (2008):Mastering VBA for Microsoft® Office 2007, Wiley Publishing, Inc., Indianapolis, Indiana 11. S. C. Albright – W. L. Winston (2005): Spreadsheet Modeling and Applications – Essentials of Practical Management Science, Thomson South Western, Mason, USA
236
Două țări, un scop, succes comun!
12.
Tarnóczi
Tibor
(2007):
Közgazdasági
és
pénzügyi
számítások
táblázatkezelı programokkal, Bessenyei György Tankönyvkiadó 13.
Tarnóczi Tibor (2007): Statisztikai adatfeldolgozás számítástechnikai lehetıségei, Bessenyei György Tankönyvkiadó
14. W. L. Winston (2003): Operációkutatás – Módszerek és alkalmazások, Aula, Budapest
237
Două țări, un scop, succes comun!
ANEXA 1.
Funcții de baze de date
Funcție Funcția DAVERAGE Funcția DCOUNT Funcția DCOUNTA Funcția DMAX Funcția DGET Funcția DMIN Funcția DSTDEV
Funcția DSTDEVP
Funcția DPRODUCT
Funcția DSUM Funcția DVAR Funcția DVARP
238
Descriere Returnează media intrărilor de bază de date selectate. Numără celulele care conțin numere într-o bază de date. Numără celulele care nu sunt necompletate întro bază de date. Returnează valoarea maximă dintre intrările de bază de date selectate. Extrage dintr-o bază de date o singură înregistrare care satisface criteriile specificate. Returnează valoarea minimă dintre intrările de bază de date selectate. Estimează abaterea standard pe baza unui eșantion de intrări selectate dintr-o bază de date. Calculează abaterea standard pe baza întregii populații de intrări selectate dintr-o bază de date. Înmulțește valorile dintr-un anumit câmp de înregistrări care îndeplinesc criteriile într-o bază de date. Adună numerele dintr-o coloană de câmpuri a înregistrărilor dintr-o bază de date care satisfac criteriile specificate. Estimează varianța pe baza unui eșantion de intrări selectate dintr-o bază de date. Calculează varianța pe baza întregii populații a intrărilor selectate dintr-o bază de date.
Două țări, un scop, succes comun!
2.
Funcții de dată și oră
Funcție Funcția DATE Funcția DATEVALUE Funcția YEAR Funcția WEEKDAY Funcția WEEKNUM Funcția MONTH Funcția EOMONTH Funcția TIME Funcția TIMEVALUE Funcția EDATA
Funcția WORKDAY
Funcția WORKDAY.INTL Funcția TODAY Funcția NOW
Descriere Returnează numărul serial al unei anumite date calendaristice. Efectuează conversia unei date calendaristice sub formă de text într-un număr serial. Efectuează conversia unui număr serial într-un an. Efectuează conversia unui număr serial într-o zi a săptămânii. Efectuează conversia unui număr serial într-un număr reprezentând numărul săptămânii respective din an. Efectuează conversia unui număr serial într-o lună. Returnează numărul serial al ultimei zile a lunii care este înainte sau după un număr specificat de luni. Returnează numărul serial al unei valori de timp specificate. Efectuează conversia unei ore sub formă de text într-un număr serial. Returnează numărul serial al datei calendaristice care este numărul indicat de luni, înainte sau după data calendaristică de început. Returnează numărul serial al datei calendaristice care este înainte sau după un număr specificat de zile lucrătoare. Returnează numărul serial al datei dinainte sau după un număr specificat de zile de lucru, utilizând parametri pentru a indica câte zile și care anume sunt zile de weekend. Returnează numărul serial al datei calendaristice din ziua curentă. Returnează numărul serial al datei și orei curente. 239
Două țări, un scop, succes comun!
Funcție
Descriere Efectuează conversia unui număr serial într-o Funcția SECOND secundă. Efectuează conversia unui număr serial într-o zi Funcția DAY a lunii. Calculează numărul de zile dintre două date calendaristice având ca bază un an cu 360 de Funcția DAYS360 zile. Efectuează conversia unui număr serial într-o Funcția HOUR oră. Returnează numărul de zile lucrătoare întregi Funcția NETWORKDAYS dintre două date calendaristice. Returnează numărul de zile lucrătoare întregi dintre două date calendaristice, utilizând Funcția parametri pentru a indica câte zile și care NETWORKDAYS.INTL anume sunt zile de weekend. Efectuează conversia unui număr serial într-un Funcția MINUTE minut. Returnează fracțiunea din an pe care o reprezintă numărul de zile întregi cuprinse între Funcția YEARFRAC data calendaristică de început și cea de sfârșit.
3.
Funcții de informații
Funcție Funcția CELL FuncțiaNA Funcția ISERR Funcția ERROR.TYPE Funcția ISERROR
240
Descriere Returnează informații despre formatarea, locația sau conținutul unei celule. Returnează valoarea de eroare #N/A Returnează TRUE dacă valoarea este orice altă valoare de eroare în afară de #N/A. Returnează un număr ce corespunde unui tip de eroare. Returnează TRUE dacă valoarea este orice valoare de eroare.
Două țări, un scop, succes comun!
Funcție Funcția ISREF Funcția INFO Funcția ISLOGIC Funcția ISNONTEXT Funcția ISNA Funcția ISODD Funcția ISEVEN Funcția N Funcția ISNUMBER Funcția ISTEXT Funcția TYPE Funcția ISBLANK
4.
Descriere Returnează TRUE dacă valoarea este o referință. Returnează informații despre mediul de operare curent. Returnează TRUE dacă valoarea este o valoare logică. Returnează TRUE dacă valoarea nu este text. Returnează TRUE dacă valoarea reprezintă valoarea de eroare #N/A. Returnează TRUE dacă numărul este impar Returnează TRUE dacă numărul este par. Returnează o valoare convertită în număr. Returnează TRUE dacă valoarea este un număr. Returnează TRUE dacă valoarea este text. Returnează un număr indicând tipul de dată al unei valori. Returnează TRUE dacă valoarea este necompletată.
Funcții de cub
Funcție Funcția CUBEVALUE
Funcția CUBEPKIMEMBER
Descriere Returnează o valoare agregată din cub. Returnează o proprietate a indicatorului cheie de performanță (KPI) și afișează numele KPI în celulă. KPI este o măsurătoare cuantificabilă, cum ar fi profitul brut lunar sau comisionul trimestrial al angajatului, care se utilizează pentru a monitoriza performanțele unei companii.
241
Două țări, un scop, succes comun!
Funcție
Descriere Definește un set calculat de membri sau tupluri prin trimiterea unei expresii de set la cubul de Funcția CUBESET pe server, ceea ce creează setul, apoi returnează setul în Microsoft Office Excel. Funcția CUBESETCOUNT Returnează numărul de elemente dintr-un set.. Returnează membrul de ordin n dintr-un set. Se utilizează pentru a returna unul sau mai multe Funcția elemente dintr-un set, cum ar fi cel mai bun CUBERANKEDMEMBER vânzător sau cei mai buni 10 studenți. Returnează un membru sau tuplu dintr-un cub. Se utilizează pentru a valida faptul că există Funcția CUBEMEMBER membrul sau tuplul în cub. Returnează valoarea unei proprietăți membru dintr-un cub. Utilizată pentru a valida faptul că Funcția numele membrului există în interiorul cubului CUBEMEMBERPROPERTY și pentru a returna proprietatea specificată pentru membrul respectiv.
5.
Funcții logice
Funcție Funcția AND Funcția IF Funcția IFERROR Funcția FALSE Funcția TRUE Funcția NOT Funcția OR
242
Descriere Returnează TRUE dacă argumentele sunt toate adevărate. Specifică un test logic de executat. Returnează o valoare specificată de dvs. dacă o formulă are ca rezultat o eroare; altfel, returnează rezultatul formulei.. Returnează valoarea logică FALSE. Returnează valoarea logică TRUE. Inversează valoarea logică a argumentului. Returnează TRUE dacă unul dintre argumente este adevărat.
Două țări, un scop, succes comun!
6.
Funcții matematice și trigonometrice
Funcție Funcția FLOOR.PRECISE
Funcția CEILING.PRECISE Funcția ABS Funcția ACOSH Funcția ACOS Funcția ATAN Funcția ATAN2 Funcția ASIN Funcția ASINH Funcția ATANH Funcția COS Funcția COSH Funcția TRUNC Funcția SIGN Funcția FACT Funcția FACTDOUBLE Funcția DEGREES Funcția SQRT Funcția SQRTPI
Descriere Rotunjește un număr în jos la cel mai apropiat întreg sau la cel mai apropiat multiplu semnificativ. Numărul este rotunjit în jos indiferent de semnul său.. Rotunjește un număr la cel mai apropiat întreg sau la cel mai apropiat multiplu semnificativ. Numărul este rotunjit în sus indiferent de semnul său.. Returnează valoarea absolută a unui număr. Returnează inversa cosinusului hiperbolic al unui număr. Returnează valoarea arccosinusului unui număr. Returnează valoarea arctangentei unui număr. Returnează valoarea arctangentei după coordonatele x și y. Returnează valoarea arcsinusului unui număr. Returnează inversa sinusului hiperbolic al unui număr. Returnează valoarea inversă a tangentei hiperbolice a unui număr. Returnează valoarea cosinusului unui număr. Returnează valoarea cosinusului hiperbolic al unui număr. Trunchiază un număr la un întreg. Returnează semnul unui număr. Returnează factorialul unui număr. Returnează factorialul dublu al unui număr. Convertește radianii în grade. Returnează valoarea pozitivă a rădăcinii pătrate. Returnează valoarea rădăcinii pătrate din (număr * pi). 243
Două țări, un scop, succes comun!
Funcție
Funcția MINVERSE
Descriere Returnează valoarea unui număr ridicat la o putere. Rotunjește un număr la primul întreg dinaintea lui. Returnează matricea inversă a unei matrice.
Funcția ROUNDUP
Rotunjește un număr în sus, dinspre zero.
Funcția ROUNDDOWN
Rotunjește un număr în jos, înspre zero. Rotunjește un număr la un număr specificat de cifre. Returnează e la puterea unui număr dat.
Funcția POWER Funcția INT
Funcția ROUND Funcția EXP Funcția COMBIN Funcția QUTIENT Funcția GCD Funcția LCM Funcția LN Funcția LOG Funcția LOG10 Funcția MOD Funcția MDETERM Funcția MMULT Funcția SUMSQ Funcția AGGREGATE Funcția FLOOR Funcția ODD Funcția EVEN 244
Returnează numărul de combinări pentru un număr dat de obiecte. Returnează întregul unei împărțiri. Returnează valoarea celui mai mare divizor comun. Returnează valoarea celui mai mic multiplu comun. Returnează valoarea logaritmului natural al unui număr. Returnează valoarea logaritmului unui număr într-o bază dată. Returnează valoarea logaritmului zecimal al unui număr. Returnează restul unei împărțiri. Returnează determinantul unei matrice. Returnează valoarea produsului matricial a două matrice. Returnează suma pătratelor argumentelor. Returnează o medie într-o listă sau o bază de date. Rotunjește un număr prin lipsă, înspre zero. Rotunjește un număr la cel mai apropiat număr întreg impar următor. Rotunjește un număr în sus la cel mai apropiat întreg par.
Două țări, un scop, succes comun!
Funcție Funcția PI
Descriere Returnează valoarea numărului pi.
Rotunjește un număr la cel mai apropiat întreg sau la cel mai apropiat multiplu semnificativ. Efectuează conversia gradelor în radiani. Funcția RADIANS Returnează subtotalul unei liste sau baze de Funcția SUBTOTAL date. Efectuează conversia în forma romană a unui Funcția ROMAN număr cu cifre arabe, sub formă de text. Returnează sinusul unui unghi dat. Funcția SIN Returnează sinusul hiperbolic al unui număr. Funcția SINH Returnează suma unei serii de puteri, pe baza Funcția SERIESSUM formulei. Returnează valoarea multinomială a unui set de Funcția MULTINOMIAL numere. Funcția PRODUCT Înmulțește argumentele funcției. Returnează suma produselor componentelor Funcția SUMPRODUCT unei matrice corespondente. Pfuncția CEILING
Funcția SUM Funcția SUMIF Funcția SUMIFS Funcția SUMX2MY2 Funcția SUMX2PY2 FuncțiaSUMXMY2 Funcția TAN Funcția TANH Funcția MROUND
Adună argumentele funcției. Adună conținutul celulelor specificate, după un criteriu dat. Adaugă celulele dintr-o zonă care îndeplinesc mai multe criterii.. Returnează suma diferențelor pătratelor valorilor corespondente din două matrice. Returnează suma sumei pătratelor valorilor corespondente din două matrice. Returnează suma pătratelor diferențelor valorilor corespondente din două matrice. Returnează valoarea tangentei unui număr. Returnează valoarea tangentei hiperbolice a unui număr. Returnează un număr rotunjit la multiplul dorit. 245
Două țări, un scop, succes comun!
Funcție
Descriere
Funcția RAND
Returnează un număr aleator între 0 și 1.
Funcția RANDBETWEEN
Returnează un număr aleator, cuprins între numerele specificate.
7.
Funcții de cautare și de referință
Funcție Funcția ADDRESS Funcția OFFSET Funcția VLOOKUP
Funcția HYPERLINK Funcția MATCH Funcția INDEX Funcția INDIRECT Funcția LOOKUP Funcția GETPIVOTDATA Funcția COLUMN Funcția COLUMNS Funcția ROW Funcția ROWS 246
Descriere Returnează o referință ca text la o singură celulă dintr-o foaie de lucru. Returnează poziția relativă, față de o referință dată. Caută în prima coloană a unei matrice și se deplasează pe rând pentru a returna valoarea unei celule. Creează o comandă de acces rapid sau o legătură care deschide un document stocat pe un server de rețea, în intranet sau în Internet. Caută valori într-o referință sau într-o matrice. Utilizează un index pentru a alege o valoare dintr-o referință sau dintr-o matrice. Returnează o referință indicată printr-o valoare text. Caută valori într-un vector sau într-o matrice. Returnează datele stocate într-un raport PivotTable. Returnează numărul coloanei unei referințe. Returnează numărul de coloane dintr-o referință. Returnează numărul de rând al unei referințe. Returnează numărul de rânduri dintr-o referință.
Două țări, un scop, succes comun!
Funcție Funcția AREAS
Descriere Returnează numărul de zone dintr-o referință.
Funcția TRANSPOSE
Returnează transpusa unei matrice.
Funcția CHOOSE
Alege o valoare dintr-o listă de valori.
Funcția RTD
Regăsește date în timp real dintr-un program care recunoaște automatizarea COM.
Funcția HLOOKUP
Caută în rândul de sus al unei matrice și returnează valoarea celulei indicate.
8.
Funcții de inginerie
Funcție
Descriere
Funcția BESSELI
Returnează funcția Bessel modificată In(x).
Funcția BESSELJ
Returnează funcția Bessel Jn(x).
Funcția BESSELK
Returnează funcția Bessel modificată Kn(x).
Funcția BESSELY
Returnează funcția Bessel Yn(x). Efectuează conversia unui număr din sistem binar în sistem zecimal. Efectuează conversia unui număr din sistem binar în sistem hexazecimal. Efectuează conversia unui număr din sistem binar în sistem octal. Efectuează conversia unui număr din sistem zecimal în sistem binar. Efectuează conversia unui număr din sistem zecimal în sistem hexazecimal. Efectuează conversia unui număr din sistem zecimal în sistem octal. Testează egalitatea a două valori. Efectuează conversia unui număr din sistem hexazecimal în sistem binar.
Funcția BIN2DEC Funcția BIN2HEX Funcția BIN2OCT Funcția DEC2BIN Funcția DEC2HEX Funcția DEC2OCT Funcția DELTA Funcția HEX2BIN
247
Două țări, un scop, succes comun!
Funcție Funcția HEX2DEC Funcția HEX2OCT Funcția ERF Funcția ERFC Funcția ERF.PRECISE függvény
Descriere Efectuează conversia unui număr din sistem hexazecimal în sistem zecimal. Efectuează conversia unui număr din sistem hexazecimal în sistem octal. Returnează funcția de eroare. Returnează complementara funcției de eroare. Returnează funcția de eroare.
Returnează funcția ERF complementară integrată de la x la infinit. Returnează valoarea absolută a unui număr Funcția IMABS complex (modulul). Returnează argumentul theta, un unghi exprimat Funcția IMARGUMENT în radiani. Returnează cosinusul unui număr complex. Funcția IMCOS Funcția IMEXP Returnează exponențiala unui număr complex. Returnează rădăcina pătrată a unui număr Funcția IMSQRT complex. Returnează câtul a două numere complexe. Funcția IMDIV Returnează un număr complex ridicat la o Funcția IMPOWER putere întreagă. Returnează conjugata complexă a unui număr Funcția IMCONJUGATE complex. Returnează diferența dintre două numere Funcția IMSUB complexe. Returnează logaritmul natural al unui număr Funcția IMLN complex. Returnează logaritmul zecimal al unui număr Funcția IMLOG10 complex. Returnează logaritmul în baza 2 al unui număr Funcția IMLOG2 complex. Returnează suma numerelor complexe. Funcția IMSUM Returnează sinusul unui număr complex. Funcția IMSIN Returnează produsul a 2 până la 255 de numere Funcția IMPRODUCT complexe. Funcția ERFC.PRECISE
248
Două țări, un scop, succes comun!
Funcție Funcția IMREAL Funcția IMAGINARY Funcția COMPLEX Funcția CONVERT Funcția GESTEP Funcția OCT2BIN Funcția OCT2DEC Funcția OCT2HEX
9.
Descriere Returnează partea reală a unui număr complex. Returnează partea imaginară a unui număr complex. Efectuează conversia coeficienților reali și imaginari într-un număr complex. Efectuează conversia unui număr dintr-un sistem de măsură în altul. Testează dacă un număr este mai mare decât o valoare de prag. Efectuează conversia unui număr din sistem octal în sistem binar. Efectuează conversia unui număr din sistem octal în sistem zecimal. Efectuează conversia unui număr din sistem octal în sistem hexazecimal.
Funcții statistice
Funcție Funcția AVEDEV Funcția AVERAGE
Descriere Returnează media aritmetica a abaterilor absolute ale punctelor de date de la valoarea lor medie. Returnează media aritmetică a argumentelor.
Funcția AVERAGEA
Returnează media aritmetică a argumentelor, inclusiv numere, texte și valori logice.
Funcția AVERAGEIF
Returnează valoarea medie (media aritmetică) a tuturor celulelor dintr-o zonă care îndeplinesc un anumit criteriu.
Funcția AVERAGEIFS Funcția BETA.DIST
Returnează valoarea medie (media aritmetică) a tuturor celulelor care îndeplinesc mai multe criterii. Returnează funcția de distribuție cumulativă beta. 249
Două țări, un scop, succes comun!
Funcție Funcția BETA.INV Funcția BINOM.DIST Funcția BINOM.INV Funcția KURT
Descriere Returnează inversa funcției de distribuție cumulativă pentru o distribuție beta specificată. Returnează probabilitatea unei variabile discrete de distribuție binomială. Returnează cea mai mică valoare pentru care distribuția binomială cumulativă este mai mare sau egală cu o valoare criteriu. Returnează coeficientul Kurt al unui set de date.
Funcția COUNT
Contorizează numerele din lista de argumente.
Funcția COUNTA
Contorizează valorile din lista de argumente.
Funcția COUNTIFS
Contorizează numărul de celule dintr-o zonă care întrunesc mai multe criterii.
Funcția FORECAST
Contorizează numărul de celule ale unei zone care corespund unui criteriu dat. Contorizează numărul de celule goale dintr-o zonă. Returnează o valoare dintr-o tendință liniară.
Funcția EXP.DIST
Returnează distribuția exponențială.
Funcția F.DIST Funcția F.DIST.RT
Returnează distribuția de probabilitate F. Returnează distribuția de probabilitate F. Returnează inversa distribuției de probabilitate F. Returnează inversa distribuției de probabilitate F. Returnează rezultatul unui test F. Returnează asimetria unei distribuții. Returnează transformarea Fisher. Returnează distribuția gama. Returnează inversa distribuției cumulative gama.
Funcția COUNTIF Funcția COUNTBLANK
Funcția F.INV Funcția F.INV.RT Funcția F.TEST Funcția SKEW Funcția FISHER Funcția GAMMA.DIST Funcția GAMMA.INV
250
Două țări, un scop, succes comun!
Funcție Funcția GAMMALN Funcția GAMMALN.PRECISE
Descriere Returnează logaritmul natural al funcției gama, Γ(x). Returnează logaritmul natural al funcției gama, Γ(x).
Funcția FREQUENCY
Returnează o distribuție a frecvenței ca matrice verticală.
Funcția HARMEAN
Returnează media armonică.
Funcția HYPGEOM.DIST
Returnează distribuția hipergeometrică.
Funcția FISCHERINV
Returnează inversa transformării Fisher.
Returnează funcția de densitate a probabilității cumulative beta. Returnează probabilitatea cu o coadă a Funcția CHISQ.DIST.RT distribuției hi-pătrat. Funcția CHISQ.DIST
Funcția CHISQ.DIST.INV Funcția CHISQ.DIST.INV.RT Funcția CHISQ.TEST Funcția SMALL Funcția CORREL
Returnează funcția de densitate a probabilității cumulative beta. Returnează inversa probabilității cu o coadă a distribuției hi-pătrat. Returnează testul de independență. Returnează a k-a valoare minimă într-un set de date. Returnează coeficientul de corelație între două seturi de date.
Returnează covarianța, media produselor abaterilor pereche. Returnează covarianța eșantion, media Funcția COVARIANCE.S produselor abaterilor pentru fiecare pereche de puncte de date din două seturi de date. Returnează cuartila unui set de date, pe baza Funcția QUARTILE.EXC valorilor percentile din 0..1, exclusiv. Funcția QUARTILE.INC Returnează cuartila unui set de date. Funcția COVARIANCE.P
251
Două țări, un scop, succes comun!
Funcție
Descriere
Funcția LINEST
Returnează parametrii unei tendințe liniare.
Funcția LOGEST
Returnează parametrii unei tendințe exponențiale.
Funcția LOGNORM.DIST
Returnează distribuția cumulativă lognormală.
Funcția LOGNORM.INV Funcția MAX
Returnează inversa unei distribuții cumulative lognormale. Returnează valoarea maximă într-o listă de argumente.
Funcția MAXA
Returnează valoarea maximă dintr-o listă de argumente, inclusiv numere, text sau valori logice.
Funcția MEDIAN
Returnează mediana numerelor date.
Funcția CONFIDENCE.NORM
Returnează intervalul de încredere pentru o medie a populației.
Returnează intervalul de încredere pentru o Funcția CONFIDENCE.T medie a populație, utilizând o distribuție t Student. Funcția SLOPE
Returnează panta unei regresii liniare.
Funcția GEOMEAN
Returnează media geometrică.
Funcția INTERCEPT
Returnează intersecția liniei de regresie liniară.
Funcția MIN
Returnează valoarea minimă dintr-o listă de argumente.
Funcția MINA
Returnează valoarea minimă dintr-o listă de argumente, inclusiv numere, text sau valori logice.
Funcția MODE.SNGL
Returnează cea mai frecventă valoare dintr-un set de date.
Funcția MODE.MULT
Returnează o matrice verticală a valorilor care se repetă cel mai frecvent sau a valorilor repetitive dintr-o matrice sau o zonă de date.
252
Două țări, un scop, succes comun!
Funcție Funcția LARGE Funcția NEGBINOMDIST Funcția NORM.DIST Funcția NORM.INV Funcția NORM.S.DIST
Descriere Returnează a k-a cea mai mare valoare dintr-un set de date. Returnează distribuția binomială negativă. Returnează distribuția normală cumulativă. Returnează inversa distribuției normale cumulative. Returnează distribuția normală cumulativă standard.
Funcția STANDARDIZE
Returnează inversa distribuției normale cumulative standard. Returnează o valoare normalizată.
Funcția GROWTH
Returnează valori dintr-o tendință exponențială.
Funcția PEARSON
Returnează coeficientul de corelație Pearson.
Funcția PERCENTILE.EXC
Returnează a k-a percentilă a valorilor dintr-un interval, unde k este în intervalul 0..1, exclusiv.
Funcția PERCENTILIE.INC
Returnează a k-a percentilă a valorilor dintr-un interval.
Funcția POISSON.DIST
Returnează distribuția Poisson. Returnează rangul unui număr într-o listă de numere.
Funcția NORM.S.INV
Funcția RANK.AVG Funcția RANK.EQ Funcția TRIMMEAN Funcția RSQ
Returnează rangul unui număr într-o listă de numere. Returnează media din interiorul unui set de date. Returnează pătratul coeficientului de corelație Pearson.
Funcția DEVSQ
Returnează suma pătratelor abaterilor.
Funcția STEYX
Returnează eroarea standard a valorii estimate y pentru fiecare valoare x din regresie.
253
Două țări, un scop, succes comun!
Funcție
Descriere
Funcția PERCENTRANK.EXC
Returnează rangul unei valori dintr-un set de date ca procentaj (0..1, exclusiv) al setului de date.
Funcția PERCENTRANK.INC
Returnează rangul procentual al unei valori dintr-un set de date.
Funcția STDEV.S Funcția STDEV.P
Estimează abaterea standard pe baza unui eșantion. Calculează abaterea standard pe baza întregii populații.
Funcția STDEVA
Estimează abaterea standard pe baza unui eșantion, incluzând numere, text sau valori logice.
Funcția STDEVPA
Calculează abaterea standard pe baza întregii populații, incluzând numere, text sau valori logice.
Funcția T.DIST Funcția T.DIST.2T
Returnează punctele de procentaj (probabilitate) pentru distribuția t Student. Returnează punctele de procentaj (probabilitate) pentru distribuția t Student.
Funcția T.DIST.RT
Returnează distribuția t Student.
Funcția T.INV
Returnează valoarea t a distribuției t Student ca o funcție de probabilitate și de gradele de libertate.
Funcția T.INV.2T
Returnează inversul distribuției t Student.
Funcția VAR.S
Returnează probabilitatea asociată cu un test t Student. Returnează valori dintr-o tendință liniară. Returnează probabilitatea ca valorile dintr-un interval să fie între două limite. Estimează varianța pe baza unui eșantion.
Funcția VAR.P
Calculează varianța pe baza întregii populații.
Funcția TTEST Funcția TREND Funcția PROB
254
Două țări, un scop, succes comun!
Funcție
Descriere
Funcția VARA
Estimează varianța pe baza unui eșantion, incluzând numere, text și valori logice.
Funcția PERMUT
Returnează numărul de permutări pentru un număr dat de obiecte.
Funcția VARPA
Calculează varianța pe baza întregii populații, incluzând numere, text și valori logice.
Funcția WEIBULL.DIST
Returnează distribuția Weibull.
Funția Z.TEST
Returnează valoarea de probabilitate cu o coadă a unui test z.
10. Funcții text
Funcție Funcția ASC Funcția EXACT Funcția BAHTTEXT
Descriere Modifică literele englezești sau katakana ale unui șir de caractere din lățime întreagă (doi octeți) în jumătate lățime (un octet). Verifică dacă două valori text sunt identice. Efectuează conversia unui număr în text, utilizând formatul monetar ß (baht).
Funcția LEFT, LEFTB
Returnează cele mai din stânga caractere ale unei valori text.
Funcția REPLACE, REPLACEB
Înlocuiește caractere dintr-un text.
Funcția VALUE Funcția FIXED Funcția PHONETIC
Efectuează conversia unui argument text în număr. Formatează un număr ca text cu un număr fix de zecimale. Extrage caracterele fonetice (furigana) dintr-un șir text. 255
Două țări, un scop, succes comun!
Funcție Funcția DOLLAR Funcția SUBSTITUTE Funcția LEN, LENB
Descriere Efectuează conversia unui număr în text, utilizând formatul monetar $ (dolar). Enlocuiește un text vechi cu unul nou, într-un șir text. Returnează numărul de caractere dintr-un șir text.
Funcția JIS
Modifică literele englezești sau katakana ale unui șir de caractere din jumătate lățime (un octet) în lățime întreagă (doi octeți).
Funcția RIGHT, RIGHTB
Returnează cele mai din dreapta caractere ale unei valori text.
Funcția CHAR Funcția TRIM Funcția LOWER Funcția CODE
Returnează caracterul specificat de codul numeric. Elimină spațiile din text. Efectuează conversia literelor unui text în litere mici. Returnează un cod numeric pentru primul caracter dintr-un șir text.
Returnează un anumit număr de caractere dintrFuncția MID, MIDB un șir de text începând de la o poziție specificată. Efectuează conversia literelor textului în Funcția UPPER majuscule. Unește mai multe elemente text într-unul Funcția CONCATENATE singur. Funcția REPT
Repetă textul de un număr dat de ori.
Funcția TEXT
Formatează un număr și îl transformă în text.
Funcția SEARCH, SEARCHB
Găsește o valoare text în interiorul alteia (nu este sensibil la caractere mari și mici).
Funcția FIND, FINDB Funcția T 256
Găsește un text în interiorul altuia (sensibil la caractere mari și mici). Efectuează conversia argumentelor în text.
Două țări, un scop, succes comun!
Funcție
Descriere
Funcția CLEAN
Elimină din text toate caracterele care nu pot fi imprimate.
Funcția PROPER
Scrie cu literă mare prima literă din fiecare cuvânt al unei valori text.
11. Funcții financiare
Funcție Funcția PRICE
Funcția PRICEMAT Funcția PRICEDISC Funcția IRR Funcția VDB Funcția COUPNCD Funcția ODDFPRICE Funcția ODDFYIELD Funcția ODDLPRICE
Descriere Returnează prețul la 100 lei valoare nominală pentru o hârtie de valoare care plătește dobândă periodică. Returnează prețul la 100 lei valoare nominală pentru o hârtie de valoare care plătește dobândă la maturitate. Returnează prețul la 100 lei valoare nominală pentru o hârtie de valoare actualizată. Returnează rata internă de rentabilitate pentru o serie de fluxuri de numerar. Returnează amortizarea unui mijloc fix pentru o perioadă specificată sau parțială, utilizând metoda amortizării regresive Returnează data următoare a cuponului de după data de decontare. Returnează prețul la 100 lei valoare nominală pentru o hârtie de valoare care are prima perioadă anormală. Returnează randamentul unei hârtii de valoare care are prima perioadă anormală. Returnează prețul la 100 lei valoare nominală pentru o hârtie de valoare care are ultima perioadă anormală
257
Două țări, un scop, succes comun!
Funcție Funcția ODDLYIELD Funcția AMORLINC Funcția AMORDEGRC Funcția SYD Funcția DOLLARDE
Funcția DOLLARFR Funcția YIELD Funcția YIELDMAT Funcția YIELDDISC Funcția ACCRINT Funcția FB Funcția DURATION Funcția INTRATE Funcția RECEIVED Funcția DB
258
Descriere Returnează randamentul unei hârtii de valoare care are ultima perioadă anormală. Returnează amortizarea pentru fiecare exercițiu financiar. Returnează amortizarea pentru fiecare exercițiu financiar utilizând o rată de amortizare. Returnează amortizarea prin însumarea anilor a unui mijloc fix pentru o perioadă specificată. Efectuează conversia unei valori în dolari, exprimată ca fracție, într-o valoare în dolari exprimată ca număr zecimal. Efectuează conversia unei valori în dolari, exprimată ca număr zecimal, într-o valoare în dolari exprimată ca fracție. Returnează randamentul unei hârtii de valoare care plătește dobândă periodic. Returnează randamentul anual al unei hârtii de valoare care plătește dobândă la maturitate. Returnează randamentul unei hârtii de valoare actualizate, de exemplu, un bon de tezaur. Returnează dobânda cumulată pentru o hârtie de valoare care plătește dobânzi periodice. Returnează valoarea viitoare a unei investiții. Returnează durata în ani a unei hârtii de valoare cu dobândă periodică. Returnează rata dobânzii pentru o hârtie de valoare complet investită. Returnează suma primită la maturitate pentru o hârtie de valoare integral investită Returnează amortizarea unui mijloc fix pentru o perioadă specificată, utilizând metoda amortizării regresive fixe.
Două țări, un scop, succes comun!
Funcție Funcția DDB
Funcția FVSCHEDULE Funcția TBILLPRICE Funcția TBILLEQ Funcția TBILLYIELD Funcția SLN Funcția ACCRINTM Funcția DISC Funcția ISPMT Funcția PV Funcția MIRR
Funcția MDURATION Funcția NOMINAL Funcția NPV Funcția CUMIPMT Funcția CUMPRINC
Descriere Returnează amortizarea unui mijloc fix pentru o perioadă specificată, utilizând metoda amortizării dublu-regresive sau altă metodă specificată. Returnează valoarea viitoare a unui capital inițial după aplicarea unei serii de rate de dobânzi compuse. Returnează prețul la 100 lei valoare nominală pentru un bon de tezaur. Returnează rentabilitatea în echivalent-bond pentru un bon de tezaur. Returnează randamentul unui bon de tezaur. Returnează amortizarea liniară a unui mijloc fix pentru o perioadă. Returnează dobânda cumulată pentru o hârtie de valoare care plătește dobândă la scadență. Returnează rata de scont pentru o hârtie de valoare. Calculează dobânda plătită pe parcursul unei perioade specificate a unei investiții. Returnează valoarea actuală a unei investiții. Returnează rata internă de rentabilitate pentru o serie de fluxuri de numerar pozitive și negative finanțate la diferite rate. Returnează durata Macauley modificată pentru o hârtie de valoare cu valoare nominală presupusă de 100 lei. Returnează rata nominală anuală a dobânzii. Returnează valoarea netă actuală a unei investiții bazată pe o serie de fluxuri de numerar periodice și a unei rate de scont. Returnează dobânda acumulată plătită între două perioade. Returnează capitalul cumulativ plătit la un împrumut, între două perioade. 259
Două țări, un scop, succes comun!
Funcție Funcția NPER Funcția PPMT Funcția RATE Funcția PMT Funcția IPMT Funcția COUPDAYS Funcția COUPDAYSBS Funcția COUPDAYSNC Funcția COUPNUM Funcția EFFECT Funcția COUPPCD Funcția XIRR
Funcția XNPV
260
Descriere Returnează numărul de perioade pentru o investiție. Returnează plata de capital pentru o investiție pe o perioadă dată. Returnează rata dobânzii pentru o perioadă de anuitate. Returnează plata periodică pentru o anuitate. Returnează dobânda de plată pentru o investiție pentru o perioadă dată. Returnează numărul de zile ale perioadei cuponului care conține data de decontare. Returnează numărul de zile de la începutul perioadei cuponului până la data de decontare. Returnează numărul de zile de la data de decontare până la data următoare a cuponului. Returnează numărul de cupoane de plată între data de decontare și data maturității. Returnează rata efectivă a dobânzii anuale. Returnează data anterioară a cuponului, înainte de data de decontare. Returnează rata internă de rentabilitate pentru un grafic de flux de numerar care nu este neapărat periodic. Returnează valoarea actuală netă pentru un grafic de flux de numerar care nu este neapărat periodic.
Două țări, un scop, succes comun!
Universitatea din Debrecen Facultatea de Economie Aplicate şi Dezvoltare Rurală HU 4032 Debrecen, Böszörményi út 138. Telefon: +36-52-508304 Fax: +36-52-486298 www.agr.unideb.hu/karok/gvk
Universitatea Creştină Partium Facultatea de ŞtiinŃe Economice RO 410209 Oradea, Str. Primăriei Nr. 36 Tel./Fax: +40-259-418244 http://www.partium.ro/
Universitatea din Oradea Facultatea de ŞtiinŃe Economice RO Oradea, Str. Universitatii Nr. 1 Tel./Fax: +40-259-408111 http://www.uoradea.ro/
ConŃinutul acestui material nu reprezintă în mod necesar poziŃia oficială a Uniunii Europene.
www.hungary-romania-cbc.eu 247