logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[VBA Excel] Pętla w pętli / wyszukiwanie kilku zmiennych

Monika3212 23 Lip 2018 12:59 1239 3
REKLAMA
  • #1 17345101
    Monika3212
    Poziom 6  
    Posty: 7
    Potrzebuje waszej pomocy w ustaleniu błędu.

    Mianowicie tworzę arkusz wyliczający ilość palet danego produktu w celu ułatwienia organizacji transportu.
    Dokładniej wykonuję pętlę w której pobieram kolejno wiersz po wierszu kontrahenta, nazwę towaru i ilość zamówionych opakowań. (w arkuszu "DANE")
    następnie po wartościach kontrahenta i nazwie towaru wyszukuję ilość opakowań które się mieszczą na 1 pal.(w arkuszu "LOG") i dzielę ilość zamówienia przez palety..
    niestety wciąż otrzymuje błędne wyniki dzielenia

    Pomóżcie mi zrozumieć co robię źle
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    [VBA Excel] Pętla w pętli / wyszukiwanie kilku zmiennych [VBA Excel] Pętla w pętli / wyszukiwanie kilku zmiennych
  • REKLAMA
  • #2 17345210
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    W mojej ocenie błąd powodowany jest poprzez niezrozumiałą pętle
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    to ma być sposób wyszukiwania odpowiedniej wartości napalecie :?: :cry:

    Gdybyś podała przykładowy plik z wycinkiem Twoich danych to łatwiej byłoby przeanalizować Twój kod - a tak mam tylko wrażenie, że tu makro wprowadza jakieś wartości od "czapy" :D :arrow: wystarczy spojrzeć na kolumnę G :!:
  • REKLAMA
  • #3 17345238
    Monika3212
    Poziom 6  
    Posty: 7
    Kolumna G i wszystkie które są zwinięte nas nie interesują bo one są generowane przez system i nie są mi do tego potrzebne
    Interesuje nas tylko to co jest na żółto w arkuszu DANE, wszystko w arkuszu LOG i wynik dzielenia (kolumna J)
    a dzielenie wynika z podzielenia kolumny I z arkusza DANE przez kolumnę C z arkusza LOG tylko potrzebuję żeby wyszukiwało mi odpowiedni wiersz w tym arkuszu LOG
  • Pomocny post
    #4 17345674
    lanzul
    Poziom 30  
    Posty: 1023
    Pomógł: 199
    Ocena: 123
    Monika3212 napisał:
    co robię źle ...

    Np.: brak deklaracji zmiennych "ostw" i "ostw2", jak również deklaracje innych nie wiedzieć czemu "variant",
    Np.: ...
    Monika3212 napisał:
    ostw = Worksheets("DANE").Cells(Rows.Count, "B").End(xlUp).Row
    ostw2 = Worksheets("LOG").Cells(Rows.Count, "B").End(xlUp).Row

    Zapis "Rows.Count" odnosi się do bieżąco aktywnego arkusza, a nie do arkusza "DANE", czy "LOG" - oczywiście, "może się tak zdarzyć", że aktywnym arkuszem będzie "DANE", czy "LOG", ale nie musi. Zatem powinno być tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    "Te kropki" robią dużą różnicę.

    Monika3212 napisał:
    Interesuje nas tylko to co jest na żółto w arkuszu DANE, wszystko w arkuszu LOG i wynik dzielenia (kolumna J)
    a dzielenie wynika z podzielenia kolumny I z arkusza DANE przez kolumnę C z arkusza LOG tylko potrzebuję żeby wyszukiwało mi odpowiedni wiersz w tym arkuszu LOG

    Jeśli tak, i jeśli chcesz robić to na pętlach, to możesz spróbować w ten sposób (jeden z wariantów), chociaż przy dużej ilości danych nie musi to być "za szybkie":
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Dodatkowo, jeśli nie jesteś pewna prawidłowości zapisu danych w obydwu arkuszach (zbędne odstępy), to powinnaś zastosować funkcję "Trim()", to samo tyczy się (ta prawidłowość, a nie zbędne odstępy) "wartości liczbowych".
    W resztę twojego kodu nie wnikam, tj. w te "0.15", itd.
REKLAMA