Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

EXCEL - Poprawa istniejącego makra.

Maciek Chmiel 12 Paź 2017 11:25 333 7
  • #1 12 Paź 2017 11:25
    Maciek Chmiel
    Poziom 3  

    Cześć,

    "Dobrze żarło i zdechło" :)

    Już piszę o co chodzi:
    Mam makro które sprawnie funkcjonowało na dotychczasowym pliku będącym źródłem.

    Aktualnie mam nowy program z którego generuje się plik źródłowy i potrzebuję dostosować makro do nowego źródła.

    Pomożecie?

    Poniżej kod z pliku *.bas jaki do tej pory służył do przeróbki źródła.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Dorzucam pliki:

    - nowe źródło.xls to pliczek który obecnie dostaje,
    - stare źródło.xlsx to pliczek który do tej pory był przerabiany,
    - wzór do wyniku.xlsx to pliczek w którym dodałem wiersz opisujący która kolumna z nowego pokrywa się z kolumną ze starego źródła.

    Po przerobieniu makrem kolumny G i I nie są brane pod uwagę. Mogę pozostać puste.
    Ważny jest za to format zapisu daty i czasu w pozostałych kolumnach i nazwy nagłówków kolumn.

    Z góry dzięki za pomoc!

    0 7
  • #2 12 Paź 2017 15:48
    Prot
    Poziom 24  

    Kolego nie ruszaj tego makra - to nie ono jest winne tym "niedomaganiom".

    Jeśli ten nowy program eksportuje zupełnie inny format, inny układ kolumn, chyba zupełnie inne dane -
    EXCEL - Poprawa istniejącego makra.2017-10...png Download (88.88 kB)

    to modyfikacja takiego makra możliwa jest tylko przez kogoś kto zna szczegółowo co tam za dane są w tych tabelkach :crazyeyes:

    Spróbuj sam przekształcić "nowe źródło" na format "starego źródła" - to makro będzie działać bez problemu. :ok:

    0
  • Pomocny post
    #3 12 Paź 2017 17:27
    lanzul
    Poziom 21  

    Prot napisał:
    to modyfikacja takiego makra możliwa jest tylko przez kogoś kto zna szczegółowo co tam za dane są w tych tabelkach

    Bardzo słuszna uwaga, pod którą podpisuję się wszystkimi czterema kończynami łącznie ze szczątkowym ogonem na przedłużeniu pleców.

    Dodatkowo:

    1) aby można było coś poprawić/naprawić w nowym należy uprzednio uporządkować stare, gdyż dużo tam "różnych różności" - "próba porządków" poniżej:
    Makro.xls Download (44 kB)

    2) jeśli owe "porządki" w starym będą działać, to wtedy przyjdzie pora na Telesfora, nowe porządki w nowym

    Należy więc sprawdzić powyższą "próbę porządków" - i to najlepiej krok po kroku używając klawisza F8, w module makr oczywiście, nie w arkuszu, aby sprawdzić w którym ewentualnie wierszu coś się "wysypie".

    0
  • #4 12 Paź 2017 20:04
    Maciek Chmiel
    Poziom 3  

    Dzięki za odzew.
    @lanzul, Twója proba porządków jest OK. Nic się nie wysypuje.

    Chciałem właśnie uprościć działanie i do nowego źródła dopasować istniejące makro.
    Podmienić w nim zakres kolumn które ma "obrabiać", aby dojść do celu...

    0
  • Pomocny post
    #5 13 Paź 2017 14:54
    marek003
    Poziom 40  

    Wywołałeś mnie z uśpienia i tak się zastanawiam czy warto.

    Uporządkowanie makra to jedno (ktoś je wcześniej nagrywał i tak pozostawił). Tam jest sporo niepotrzebnych manewrów które właściwie same siebie wykluczają

    Tu nie ma co poprawiać starego makra tylko trzeba napisać nowe.

    Jeżeli to ma być tylko tak jak przedstawiłeś we wzorze to wystarczy takie makro (nie wiem czy będzie działać na starych excelach. powyżej 2007 powinno być ok.) :

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    Poniżej plik z wpisanym makrem.
    Sprawdź czy są te kolumny które chciałeś

    0
  • #6 13 Paź 2017 17:24
    Maciek Chmiel
    Poziom 3  

    Marek, dzięki. Wygląda na prawie OK :)
    Czego mi brakuje w tabeli arkuszu z wynikiem?
    - chciałbym aby posortowane po kolumnie A "ReferenceNum",
    - w kolumnie B wartość "StopNum" nie jest wyliczana na podstawie godzin z kolumny E "PlannedDeliveryTime" w danym "ReferenceNum". A musi być chronologicznie :)

    Poza tymi zapewne "niuansami" dla Ciebie jest wszystko super.

    0
  • Pomocny post
    #7 16 Paź 2017 09:05
    marek003
    Poziom 40  

    Wiadziałem w innych topikach że trochę kumasz VBA więc czego sam nie dołożysz sortowania?
    Przecież to nie jest trudne. Jak czegoś nie rozumiesz to nagraj makro i przeanalizuj jak jest zbudowane. Wprowadź swoje poprawki i ... tadam ... :) proste :)


    Poniżej dołożyłem sortowanie po A i po E

    Po E bo chyba o to głównie chodzi - gdyż funkcja w kolumnie B nawet w starym makro nie opierała się na kolumnie z czasem a jedynie na ilości występowania numeru referencyjnego.
    Na marginesie sam to napisaeś we wzorze dla kolumny B: zlicza ilość nazw występujących w poszczególnym ReferenceNum


    Docelowo chyba o to chodzi, ale jeżeli nie to spróbuj jaśniej wytłumaczyć zasady tworzenia numeru StopNum

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Ps. Ponieważ wprowadziłem kod "nowego" sortowania a wynik jest "zamknięty" w tabelce makro jest dla excela w wersji od 2007 w górę. W starych excelach trzeba zmienić kod sortowania i inaczej sformatować wynikowa tabelkę.

    0
  • #8 16 Paź 2017 13:51
    Maciek Chmiel
    Poziom 3  

    @marek003, to jest dokładnie to co potrzebowałem.
    Masz rację, może dałbym sam radę coś sklecić, ale zajęłoby mi to dużo czasu, bo nie jestem tak biegły w tym temacie jak Ty. Za co czynię pokłony :)

    pozdr.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo