Cum sa import ultimele x inregistrari dintr-un Excel in altul


Am primit recent ca si comentariu urmatoarea intrebare:

Am urmatoarea problema, se da o lista cu aproximativ un milion de randuri, se vrea extragerea ultimelor 100.000, exista vreo solutie pentru asta fara a deschide fisierul respectiv?

Am promis ca raspund printr-un articol, incerc sa ma tin de cuvant.

Lista cu 1 milion de randuri

Incepem cu inceputul, se da una bucata lista cu 1 milion de inregistrari, ceva ca si in imaginea de mai jos:



Import inregistrari

PS: nu e facut in photoshop, chiar e captura de ecran a unui fisier cu 1 milion de randuri.

Optiunea de import

Vrem sa luam automat ultimele 100.000 de inregistrari din tabelul sursa (cel cu 1 milion de inregistrari) si sa le punem in tabelul destinatie. Facem asta folosind un Microsoft Query putin adaptat, optiune pe care o gasim in tab-ul de data, vezi mai jos mai exact.

Import inregistrariSursa de date

Excel ne intreaba care este mai exact sursa de date, noi raspundem Excel Files, click pe ok si apoi mergem mai departe sa spunem unde e documentul sursa de date.

Import inregistrari

Coloane importate

Alegem care sunt coloanele pe care vrem sa le importam, in cazul nostru atat coloana de IT cat si coloana Info. Va dati seama ce tabel complex am copt.

Import inregistrari

Filtrare si sortare

La urmatorii 2 pasi, cei de filtrare a datelor si sortare ii dam pur si simplu next, nu cred ca aveti nevoie de o captura ecran pentru asta.

Acum vine partea interesanta: MS Query

Noi vrem sa facem un lucru mai ninja, sa importam ultimele 100.000 de inregistrari dintr-un fisier care are 1.000.000 de randuri. Pentru asta vom facem noi un cod custom SQL, si ca sa facem asta selectam optiunea 2, ca in imaginea de mai jos.

Import inregistrariDupa ce dam finish vom vedea acest ecran, este acolo un buton pe care scrie SQL, daca nu il vezi iti dau un indiciu, e o sageata verde care arata inspre el.

Import inregistrari

Aici e locul unde se intampla magia, gasim aici codul SQL care ne ajuta la import-ul datelor. Vrem sa inlocuim codul existent (care importa toate inregistrarile) cu unul care le importa doar pe ultimele 100.000.

Mai exact, sa inlocuim

SELECT `Sheet1$`.Id, `Sheet1$`.Info
FROM `C:\Users\Radu\Desktop\Sursa.xlsx`.`Sheet1$` `Sheet1$`

cu

SELECT TOP 100000 `Sheet1$`.Id, `Sheet1$`.Info
FROM `C:\Users\Radu\Desktop\Sursa.xlsx`.`Sheet1$` `Sheet1$`
ORDER BY `Sheet1$`.Id DESC

De mentionat ca la voi calea unde se afla fisierele si numele lor pot varia, dar cred ca va prindeti ce se schimba. In caz ca nu v-ati prins am boldat lucrurile pe care le-am adaugat.

Rezultatul

Sa stiti ca functioneaza, cel putin la mine. Daca nu ma credeti ia vedeti mai jos. De mentionat ca eu am Office 2013 si Windows 8, si mouse fara fir negru (stiu ca asta nu are nici o relevanta, ziceam si eu asa)

Import inregistrari 7Download

Daca vrei sa incerci si tu, aici poti descarca celebrul fisier cu 1 milion de randuri.

Daca vrei sa stiu ca ti-a placut articolul apasa butonul de like de mai jos.