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 - połączenie i porównanie dwóch arkuszy

maryluu2014 11 Paź 2016 15:47 2286 17
REKLAMA
  • #1 15987877
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Witam
    ponownie bardzo prosze o pomoc. Mam dwa arkusze z dziesiątkami tysięcy wierszy-ręcznie będę to robiła do przyszłego Bożego Narodzenia.
    W jednym arkuszu są: part no-nr części , material-składowe które wchodzą w skład danej części oraz faktor- ile razy dany materiał występuje w danej części
    w drugim arkuszu-part no-nr części, data- data zapotrzebowania, wymagania-ile części potrzebujemy na konkretną datę
    Oczekiwany wynik przedstawiłam w ostatnim arkuszu. Musze dopisać komponenty do dat zapotrzebowania oraz faktor aby przedstawić zapotrzebowanie na komponenty w określonym czasie.
    Komponenty wchodzą w skład różnych części i one są tutaj najważniejsze i daty.
    Czy konieczne jest zastosowanie vba, czy mogę np działąc na tabelach przestawnych?, a jeśli moge to w jaki sposób?
    Będę bardzo wdzięczna za wszelką pomoc.
    Załączniki:
    • Zeszyt1.xlsx (9.88 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • REKLAMA
  • #3 15988010
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    dziękuję bardzo, sprawdzę- mam nadzieję, ze to zadziała :)
  • Pomocny post
    #4 15988014
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Pewnie można by za pomocą funkcji i tabel przestawnych, ale tu aż się prosi o użycie jednego zapytania SQL.
    Usuń kropki z nazw kolumn, sformatuj wszystkie daty jako daty, plik zapisz jako .xlsm i użyj:

    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #5 15988258
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Wszystko super- daty podciągają się do nr części, ale nie do materiałów(komponentów). W jaki sposób mogę to rozwiązać?
  • Pomocny post
    #7 15988644
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    maryluu2014 napisał:
    Wszystko super- daty podciągają się do nr części, ale nie do materiałów(komponentów). W jaki sposób mogę to rozwiązać?
    Nie rozumiem o co pytasz, przykład proszę. :)
  • REKLAMA
  • #8 15988683
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Zycie mi uratowałeś:). Dziękuję bardzo, bardzo mocno:). Musze przeanalizować ten sql- może rozgryzę to jakoś i się czego nauczę:)
    Tylko czemu wynik jest dopiero od 435 wiersza?
    i Chciałam się jeszcze zapytać o jedno, jeśli komponenty np x który wchodzi w skład part no: a i b jest w ilości 30 szt na magazynie w chwili obecnej to czy jest możliwość aby w kolejnych datach zapotrzebowania odejmować tą ilość bo sprawdzić ile jeszcze brakuje w określonych datach- a może to mogę zrobić tabelą przestawną?

    Dodano po 7 [minuty]:

    przypuśćmy,że mam jeszcze jedną tabelę tylko z dwoma kolumnami:
    material no( z nr komponentów-nie powtarzają się) i stock( ze stanami zapasów).
    W jaki sposób mogę połaczyć teraz te dwie tabele.
    Z góry dziękuję za pomoc i poświęcony czas
  • REKLAMA
  • Pomocny post
    #9 15988835
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    maryluu2014 napisał:
    Tylko czemu wynik jest dopiero od 435 wiersza?
    Najprawdopodobniej masz jakieś puste wiersze, które makro widzi jako puste wartości. Spróbuj dopisać klauzulę WHERE.

    maryluu2014 napisał:
    przypuśćmy,że mam jeszcze jedną tabelę tylko z dwoma kolumnami:
    material no( z nr komponentów-nie powtarzają się) i stock( ze stanami zapasów).
    W jaki sposób mogę połączyć teraz te dwie tabele.

    W ten sposób. Nazwy arkuszy w zapytaniu - do dostosowania do twojego pliku.
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    maryluu2014 napisał:
    Chciałam się jeszcze zapytać o jedno, jeśli komponenty np x który wchodzi w skład part no: a i b jest w ilości 30 szt na magazynie w chwili obecnej to czy jest możliwość aby w kolejnych datach zapotrzebowania odejmować tą ilość bo sprawdzić ile jeszcze brakuje w określonych datach- a może to mogę zrobić tabelą przestawną?
    Da się, ale już nie tak wprost. Na szybko - w wyniku, mając zużycie i stock, możesz dodać w kolumnie H funkcję, która sumuje zużycie komponentu do bieżącego wiersza:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod

    W kolumnie G masz stock początkowy, więc wystarczy odjąć jedno od drugiego i dalej obrabiać wg uznania.
  • #10 15989391
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    zaraz to sprawdzę.
    Chciałam aby Twój sql zaciągał więcej kolumn z Arkusza1 i zmieniłam go w ten sposób(m,x,y,z,q,n,o,p-to dodatkowe kolumny),ale mam niezgodność typów-sprawdzałam i nazwy kolumn są identyczne
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    Bardzo, bardzo dziękuję:)
  • #11 15989401
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    maryluu2014 napisał:
    m,x,y,z,q,n,o,p-to dodatkowe kolumny
    Takie są nagłówki tych kolumn? Uruchamiaj makro dopisując po jednej kolumnie i zobacz, przy której wystąpi błąd. Sprawdź, czy wszystkie dane w kolumnie są tego samego typu, ew. wklej te dane na forum.
  • #12 15991490
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Wszystko działa super. Dziękuję bardzo.
    Mam jeszcze jedno pytanie- mam już rozłożony zapas według zapotrzebowania i wykazuje ilości ujemne(BRAKI), czy w obrębie tego samego materiału mogę pogrupować aby pokazywało mi wymaganą ilość do" wartości okrągłych" np 50 lub sto,wówczas datę powinno pokazać najwcześniejszą.(daty wcześniej zostały posortowane rosnąco)
    Tabela przestawna ma podobne funkcje , ale nie mogę użyć w niej funkcji suma.jeżeli. i przy grupowaniu wartości pokazuje no. 50, 50-100,100-150- a ja wolałabym w każdej linijce 50(i wymagana ilość staje się partią dostawy).
    Proszę chociaz o wskazówki w jaki sposób mogę się tym zająć.Dziękuję z góry :)
    To jest chyb amój ostatni problem.Będę bardzo wdzięczna za wszelkie sugestie
  • #13 15991699
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Jak wrzucisz jakiś przykład w pliku, to może coś się uda podpowiedzieć. Twój opis jest dla mnie niejasny...
  • #14 15991911
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Przesyłam plik.
    Za wszelkie uwagi będę bardzo wdzięczna
    Załączniki:
    • Zeszyt2.xlsx (11.14 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 15992190
    Prot
    Poziom 38  
    Posty: 2580
    Pomógł: 574
    Ocena: 297
    maryluu2014 napisał:

    Za wszelkie uwagi będę bardzo wdzięczna


    Domyślam się jedynie, że zmierzasz do optymalizacji łańcucha dostaw kilku materiałów - jeśli tak :?: to moim zdaniem sformułowane "zadanie" jest nie do zrealizowania :cry: - do której komórki chciałabyś wkleić "tą" swoją funkcję :?:
    chcesz żeby jedna funkcja "obsługiwała" kilka komórek na raz (daty i ilości) :cry:

    W załączonym arkuszu proponuję wykorzystać do tych celów kilka funkcji baz danych - jednak do każdej komórki inna - choć podobne :D

    BTW w swoich arkuszach musisz zachować dużą dyscyplinę poprawności danych (szczególnie przy funkcjach baz danych) - nie może np data być tekstem jak w Twoim przykładzie.

    Zeszyt2..xlsx (11.96 kB)Musisz być zalogowany, aby pobrać ten załącznik.
  • #16 16019533
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Dziękuję jeszcze raz za pomoc:)
    Chciałam przerobić sql by pobierał mi dane z jeszcze jednej tabeli ale pojawia się "błąd składniowy" .
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    Bardzo proszę o sprawdzenie co zrobiłam nie tak.
    Załączniki:
    • Zeszyt11.xlsx (64.48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #17 16019708
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Nawiasy. SQL dla Accessa lub Excela ma taką dziwną składnię, że każde dodatkowe JOIN (oprócz ostatniego) musi być w osobnych nawiasach... Czyli:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #18 16110616
    maryluu2014
    Poziom 7  
    Posty: 57
    Ocena: 1
    Dziękuję bardzo za pomoc

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w połączeniu i porównaniu dwóch arkuszy w Excelu, zawierających dane dotyczące części i ich zapotrzebowania. W pierwszym arkuszu znajdowały się numery części, materiały oraz czynniki ich występowania, a w drugim numery części, daty zapotrzebowania oraz ilości potrzebnych części. Użytkownik rozważał użycie VBA lub tabel przestawnych do analizy danych. Otrzymał wskazówki dotyczące użycia SQL w VBA do łączenia danych z różnych arkuszy oraz usuwania błędnych dat. W trakcie dyskusji pojawiły się pytania o optymalizację zapasów oraz grupowanie wyników według określonych wartości. Użytkownik z powodzeniem zaimplementował rozwiązania, a także zadał pytania dotyczące dalszej analizy danych i poprawności składni SQL.
Wygenerowane przez model językowy.
REKLAMA