Curs valutar - căutare valori

Aici este descris un exemplu mai mult didactic, dar care poate fi folosit și în diverse rapoarte sau alte documente pentru a prelua cursul valutar la o anumită dată calendaristică. În acest exemplu, utilizatorul tastează în celula F5 o dată calendaristică în format ZZ-LL-AAAA, iar Excel afișează cursul valutar la dreapta (pentru zilele de luni-vineri) sau mai jos (pentru zilele de sâmbătă, duminică și sărbători legale).

Mai jos este descris modul de realizare al fișierului, iar la finalul articolului sunt legături la fișierele sursă, care pot fi descărcate, pentru versiunea Excel 2016 sau o versiune Excel mai veche (minim 2007). Pentru Excel 2003, trebuie modificată formula din celula G5 - se înlocuiește IFERROR(...) cu IF(ISERROR(...),...) - descrierea este mai jos.

Pregătirea fișierului

Pe pagina https://www.cursbnr.ro/curs-valutar-bnr a fost aleasă perioada - aici 03.01.2005-14.05.2019 și tabelul obținut a fost selectat și copiat într-un fișier Excel, în coloanele B și C (vezi imaginile de mai jos).

Notă: Opțional, folosind formula DATEDIF se poate verifica numărul de zile dintre două zile consecutive (în Excel, coloana D). De exemplu, în celula D9, formula folosită este =DATEDIF(B8,B9,"D"), care calculează diferența de zile dintre 3 și 4 ianuarie 2005. Întotdeauna în formula DATEDIF, cele două date calendaristice se pun în ordine crescătoare; în caz contrar, va fi afișată eroarea #NUM!.

Căutarea unei valori euro dintr-o anumită dată

În partea dreaptă a tabelului se află formula de căutare a valorii euro:

- în celula F5 se tastează data calendaristică

- în celula G5, Excel caută valoarea cursului în funcție de data introdusă, cu ajutorul funcției VLOOKUP.

Formula folosită: =VLOOKUP(F5,B8:C3641,2,FALSE)

Însă atunci când data introdusă este într-o zi de sâmbătă, duminică sau într-o zi de sărbătoare legală, Excel nu va regăsi data în coloana B și va întoarce ca rezultat un mesaj de eroare (#N/A).

În aceste zile, cursul valutar rămâne cel din ziua anterioară lucrătoare și se va folosi o altă formulă pentru a-l afișa, descrisă mai jos.

Pentru a evita afișarea erorii #N/A, funcția VLOOKUP poate fi înglobată în una din funcțiile:

  • în Excel 2003 sau mai recent, funcția IF(ISERROR)
=IF(ISERROR(VLOOKUP(F5,B8:C3641,2,FALSE)),"Vezi cursul mai jos")
  • în Excel 2007 sau mai nou, funcția IFERROR
=IFERROR(VLOOKUP(F5,B8:C3641,2,FALSE),"Vezi cursul mai jos")
  • în Excel 2016, funcția IFNA
=IFNA(VLOOKUP(F5,B8:C3641,2,FALSE),"Vezi cursul mai jos")

În celula G5, atunci când Excel nu găsește exact (VLOOKUP cu parametrul FALSE) data căutată, este afișat un mesaj de atenționare: Vezi cursul mai jos.

Pentru ca mesajul să iasă mai bine în evidență, s-a folosit formatarea condițională: dacă în celulă va fi afișat mesajul de atenționare, acesta să fie formatat cu roșu, iar celula să fie umplută cu galben.

Care este ziua tastată în celula F5?

În celulele I8:J14 se află un mic tabel cu numele zilelor în română.

Folosind în celula F6 formula WEEKDAY cu parametrul Return_type = 2, Excel determină numele zilei introduse în celula F5 și afișează o combinație de funcții și text.

Formula folosită:

=TEXT(F5,"dd-mm-yyyy")&" a fost într-o "&VLOOKUP(WEEKDAY(F5,2),I8:J14,2,FALSE)

De exemplu, pentru 08-01-2005, textul afișat va fi: 08-01-2005 a fost într-o sâmbătă

În celula F7, Excel va afișa un text doar DACĂ (IF) data căutată este o sărbătoare legală - altfel zis, dacă

  • data tastată nu se află în coloana B - dă eroare la căutarea cu VLOOKUP, adică ISNA(VLOOKUP(F5,B8:C3641,2,FALSE)

și (adică funcția logică AND, pusă la începutul celor două condiții)

  • numărul zilei săptămânii este mai mic decât 6 (deci nu e sâmbătă sau duminică - de reținut că funcția WEEKDAY are parametrul Return_type = 2 - săptămâna începe luni), adică WEEKDAY(F5,2)<6.

Formula folosită:

=IF(AND(ISNA(VLOOKUP(F5,B8:C3641,2,FALSE)),WEEKDAY(F5,2)<6),"(sarbatoare legala)","")

Și aici (la fel ca la celula G5), la celula F7 s-a aplicat o formatare condițională - text scris cu roșu și umplerea celulei cu galben.

Căutarea cursului valutar dintr-o zi lucrătoare anterioară

Folosind funcția VLOOKUP (aici cu TRUE pentru o potrivire aproximativă - ”Approximate Match”) sau funcțiile INDEX și MATCH, în celulele F9 și F10 se află două variante de căutare a datei anterioare lucrătoare:

  • F9 =VLOOKUP(F5,B8:B3641,1,TRUE)
  • F10 =INDEX(B8:B3641,MATCH(F5,B8:B3641,1),1)

și în celulele G9 și G10 se preia valoarea euro pentru data anterioară care are curs valutar:

  • G9 =(VLOOKUP(F9,B8:C3641,2,FALSE))
  • G10 =INDEX(B8:C3641,MATCH(F5,B8:B3641,1),2)

Fișierele Excel folosite mai sus pot fi descărcat:

  • pentru Excel 2016 sau mai nou (în fișier, în celula G5 a fost folosită funcția IFNA) - de aici:

https://drive.google.com/file/d/1oU-spk3_Zo3gw4hqacaCQOnTv-YQEdp9/view?usp=sharing

  • pentru Excel 2007 sau mai nou (în fișier, în celula G5 a fost folosită funcția IFERROR) - de aici:

https://drive.google.com/file/d/12nuxauq8_vKLiWc_LIRK5yVFGbCAp3wy/view?usp=sharing