Am primit recent o intrebare interesanta legata de Excel: „Radu exista un mod mai destept de a compara 2 tabele? nu as vrea sa ma pun sa fac asta manual, am si eu o viata, vreau sa ma mai uit si eu la un meci, vreau si eu sa am timp pentru chestii mai interesante.”
Eu zic ca se poate, prin acest articol o sa incerc sa va dau un raspuns pe care incerc sa il ancorez intr-o situatie reala. Hai sa zicem ca vorbim despre un raport cu informatii despre produsele unei companii de care sunt eu responsabil. Acest raport l-am trimis catre un furnizor, a facut modificari in el si mi l-a trimis inapoi, pentru ca suspectez ca a schimbat chestii pe acolo eu vreau sa vad urmatoarele:
- Care sunt randurile noi pe care le-a adaugat?
- Ce randuri a sters?
- In ce coloane au fost facute modificari?
Mai jos puteti vedea tabelul pe care vom lucra. Evident ca tabelul e mai lung, pentru 5 randuri nu imi pierd vremea, eu am luat doar o parte, sa nu trebuiasca sa dati scroll prea mult. In acest tabel au fost facute modificarile, asta inseamna ca avem 2 versiuni, versiunea mea (tabelul initial) si versiunea modificata de furnizor.
Ca sa gasim raspunsul la intrebarile de mai sus voi parcurge urmatorii pasi:
1. Caut randurile sterse in tabelul modificat folosind VLOOKUP
In dreapta tabelului meu initial adaug o coloana noua in care scriu urmatoarea formula:
=VLOOKUP(‘Tabel initial’!$A2,’Tabel modificat’!$A$2:$D$34,1,0)
Putem avea 2 rezultate posibile, fie ne returneaza codul produsului, fie returneaza o eroare, caz in care stim ca acel rand a fost sters din tabelul modificat. Multiplicam formula pentru toate liniile si mergem mai departe.
2. Cautam modificarile pentru campurile care nu au fost sterse
Facem un al doilea VLOOKUP pentru valorile care nu au fost sterse in tabelul modificat (adica cele care nu au returnat valoarea #N/A la pasul anterior). Cautam pentru fiecare cod de produs, atunci cand gasim acea valoare returnam valoarea de pe coloana 2, adica numele produsului. Valoarea asta o comparam cu valoarea din tabelul nostru initial folosind un IF simplu, daca valorile sunt egale, returnam Nu, daca valorile difera returnam Da. Daca vede undeva Excel o sa faca celula verde (formatare conditionala) ca sa ne sara in ochi.
Formula arata in felul urmator:
=IF(VLOOKUP(F11,’Tabel modificat’!$A$2:$D$33,2,0)=’Tabel initial’!$B11,”Nu”,”Da”)
Rezultatele arata ca si in imaginea alaturata, formula returneaza da pentru cazul in care vede modificari, nu in cazul in care sunt egale, iar pentru cazul in care randul a fost sters #N/A.
Repetam acest pas si pentru campurile de pret si termen de plata. Rezultatele ar trebui sa avem rezultate similare cu imaginea de mai jos:
3. Cautam randurile care nu erau in tabelul initial
Randurile care nu erau in tabelul initial au fost adaugate ulterior de furnizorul nostru. Ca sa gasesc aceste randuri voi face inca o cautare folosind VLOOKUP, de data aceasta in sens invers, din tabelul modificat in cel initial.
Formula arata in felul urmator:
=VLOOKUP(A2,’Tabel initial’!A:D,1,0)
Ca si in pasul 1, formula imi arata un cod de produs daca il gaseste in tabelul initial iar in caz contrar (adica in cazul in care a fost adaugat un produs nou) imi returneaza #N/A.
Si acum in incheiere
In felul acesta as proceda eu in cazul in care seful mi-ar cere sa vad exact ce s-a modificat intr-un tabel, care au fost randurile sterse, care au fost randurile adaugate si care au fost celulele modificate.
Aici puteti descarca fisierul pe care am lucrat eu.
As fi tare curios tu cum ai proceda. Am uns cu vazelina sectiunea de comentarii ca sa poti sa iti spui parerea cu usurinta.
Radu este fondatorul onLearn si autorul majoritatii articolelor de pe acest site. Cand nu scrie sau nu inregistreaza vreun tutorial e in sala de curs sau lucreaza pe proiecte de consultanta ca sa invete lucruri noi.
Ai o intrebare?
Daca ai ajuns pana aici cautand sectiunea de comentarii, sa stii ca aceasta nu exista :). Poti insa ca sa ne pui intrebari in partea de forum a site-ului, te asteptam acolo.
Foarte util. Dar in cazul in care am doua liste cam la fel ca ale tale…produsele nu sunt in ordine iar coloanele cu pretul si data au fost modificate in lista 2. Cum as putea compara coloana cu id produs iar cand il gaseste sa-mi preia pe o coloana noua (in primul fisier) pretul si pe alta coloana data din cel de-al doilea fisier? Mentionez ca e vorba de aprox. 80mii de randuri 😐
Sper ca am inteles bine 🙂 cred ca poti face asta folosind VLOOKUP, vezi mai multe aici: https://excelninja.ro/formule-vlookup/
Da, multumesc. A mers – nu treceam eu corect formula ;))
Radu, trebuie musai sa fie aranjate in ordine alfabetica info din coloana de control? Adica A2 in cazul tau?
Nu
Pingback: Compara 2 tabele in Excel COUNTIF / COUNTIFS | excelninja.ro
Pingback: Cum sa inveti Excel - 20 pasi | excelninja.ro
Comentariile sunt închise.