Vlookup za pomocą Pythona

0

Cześć, napisałem krótki program służący jako Vlookup w Excelu (czyli szukaj pionowo) i wygląda tak:

from openpyxl import load_workbook
print('start')
wb = load_workbook('cos.xlsx')
wc = load_workbook('cos2.xlsx')

wbs = wb.active
wcs = wb.active

for i in range(1, wbs.max_row+1):
    x = str(wbs.cell(i, 5).value)
    for j in range(1, wcs.max_row+1):
        y = str(wcs.cell(j, 14))
        if x == y:
            wbs.cell(row=i, column=6, value=j[6])
            wbs.cell(row=i, column=7, value=j[9])
wb.save('NewOne.xlsx')
print('end')

i problem jest taki że program zadziała ale nic się nie dzieje :/

krótki wyjaśnienie nr. Kolumn - kolumna nr.5 (czyli E) ma kilka nr id a w drugim pliku w kolumnie 14 (czyli N) są różne nr w tym te co są w pierwszym pliku, więc do 6 i 7 kolumny (czyli F i G) pierwszego pliku wklej to co się znajduje w drugim pliku w 7 i 10 kolumnie (czyli F i I)

ktoś coś ?

38

Skoro nic się nie dzieje to nie działa, tylko co dokładnie i w którym miejscu?

0

Jak wyżej, w takich przypadkach: Co mówi debugger?

0

Wiecie co, zrobiłem to ostatecznie w pandasie ale jest strasznie, okropnie mega wolny i szybciej jest ręcznie Vlookup zrobić. Pracuje z naprawdę dużymi plikami i python po prostu nie wyrabia :/ Może w innym języku programowania będzie coś szybciej, możecie mi podpowiedzieć co by było lepsze w takiej sytuacji ?

0

masz błąd w wcs = wb.active
poza tym zastanów się nad jednorazowym ściągnięciem odpowiednich kolumn z exceli zaś dalej obrabiaj za pomocą pythona.

0

wolne to jest, za duża ilość danych i program się gubi. Kolega z pracy w VBA spróbował coś takiego zrobić i też mówi że wolno działa więc odpuszczam sobie temat, fajnie by było mieć taki program ale do dużych plików niestety nie jest skuteczny :/ ale Pythona nie opuszczam, jest jeszcze kilka rzeczy to zautomatyzowania xD

1

Bo ty każdy krok robisz poprzez excela!
Wyszukujesz w dwóch pętlach czyli złożoność jest M*N, gdzie M i N to ilości wierszy w odpowiednich arkuszach!
Jeżeli masz zależność 1:1 do zrób w excelu równanie =wyszukaj.pionowo(...)
I wtedy już normalnie zapisujesz do trzeciego pliku.
Jeżeli jeden z plików rzadko się zmienia to zrób z niego jsona i wciągaj całość do pythona.
Poza tym zawsze możesz skopiować od razu dwie kolumny - pobrać to do pythona i dopiero obrabiać.
W każdym razie zrobiłeś najgorszy wariant z możliwych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1