Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel 2003, makro szukające określonyc wierszy w kolumnie.

30 Lis 2009 20:30 4409 8
  • Poziom 9  
    Potrzeba jest następująca dla Excela 2003, bo taki mam w pracy.

    W kolumnie A jest nazwisko
    W kolumnie B jest czas wyjścia
    W kolumnie C jest czas powrotu
    W kolumnie D jest liczba przedmiotów do przyniesienia
    W kolumnie E jest kod produktu, który nigdy się nie powtarza
    W kolumnie F jest wydajność pracownika

    Arkuszy jest 5 bo jest 5 dni roboczych (pon-pt). Wierszy w arkuszach jest około 350, odpowiednio z nazwiskami, czasami i liczbą przedmiotów, kodem i wydajnością.

    Potrzebuję wyszukać w kolumnie A takich wierszy z nazwiskami, w których jest ten sam czas wyjścia i czas powrotu. Następnie przedmioty należy dodać do siebie albo w scalonej komórce albo w dodatkowej. Wydajność podobnie jak przedmioty należy zsumować jednak następnie należy podzielić przez liczbę zadań (ilość wyjść dla nazwiska przy tym samym czasie). Nazwiska, czasy oraz wydajność również mogą zostać scalone lub mile widziany leszy pomysł. Reszta różniących się rzeczy powinna zostać bez zmian.

    Dziękuję z góry za pomoc, dla jasności załączam plik z przykładowymi danymi.
    Załączniki:
  • Moderator Programowanie
    Jeśli każesz sobie płacić 3 pkt. za download, to kto Ci pomoże?

    p.s. Najlepiej chyba użyć tablicy lub przepisywać obliczenia do innych kolumn lub arkusza...
  • Poziom 9  
    Witam ponownie,

    Przepraszam za punktowany download powyżej, zrobiłem to nieświadomie, myślałem, że to cena jaką ja zapłacę za wystawienie pliku (jestem tu nowicjuszem). Pomysł z tablicami i rezultatem w nowym arkuszu bądź pliku mi bardzo odpowiada (oczywiście chodzi o to co mniej czasochłonne do napisania), jednak jestem mało doświadczonym użytkownikiem Excela i nie wiem jak to zrobić. Dalej więc proszę o pomoc w postaci kodu lub gotowego pliku. Jeżeli jest to normalne na tym forum to naturalnie za finalną pomoc chcę podarować punkty.

    Tymczasem ponownie załączam plik...
  • Moderator Programowanie
    derekyoung napisał:
    Jeżeli jest to normalne na tym forum to naturalnie za finalną pomoc chcę podarować punkty.
    To jest Twoja indywidualna sprawa. Darowanie punktów nie jest naturalne na tym forum :) Wskazane jest natomiast kliknięcie przycisku [Pomógł] jeśli uważasz to za zasadne.

    Do rzeczy.
    1. Czy dobrze rozumiem, że zdublowane czasy dotyczą zawsze tej samej osoby, która "załatwia" kilka spraw (różne kody zadań) za jednym wyjściem? Czy może dotyczyć >1 osoby.
    2. Scalanie komórek nie jest najlepszym pomysłem... Scalić komórki (makrem) to żaden problem, ale przy zmianach, uzupełnianiu, usuwaniu danych itp. mogą pojawić się problemy.
    3. Można grupować zadania wg nazwiska i czasów. Wyglądałoby to mniej więcej tak (dla wierszy 13 do 16):

    Excel 2003, makro szukające określonyc wierszy w kolumnie.

    Sortowanie kodów:
    Żeby później nie zgubić grupowania, należałoby (makro) rozpocząć od posortowania.
  • Poziom 9  
    Pozwolę sobie na interpretację Twoich pytań w poniższy sposób dla ogólnej jasności
    .................................................................................................................
    1.
    Czy dobrze rozumiem, że zdublowane czasy dotyczą zawsze tej samej osoby, która "załatwia" kilka spraw (różne kody zadań) za jednym wyjściem? Czy może dotyczyć >1 osoby.

    Odp>> Tak, zdublowane czasy dotyczą tej samej osoby ale nie zawsze, gdyż zdarzyć się może, że np dwóch pracowników zacznie zadanie o tej samej porze i je tak samo skończy mimo różnych ilości zadań. Zatem może to dotyczyć więcej niż 1 osoby.

    .................................................................................................................
    2.
    Scalanie komórek nie jest najlepszym pomysłem... Scalić komórki (makrem) to żaden problem, ale przy zmianach, uzupełnianiu, usuwaniu danych itp. mogą pojawić się problemy.

    Odp>>Dotychczas używałem autofiltra, następnie scalałem ręcznie nazwiska, czasy, wydajność oraz sumowałem liczbę do zrobienia, co dla każdego dnia tygodnia przy około 350do440 wierszy to spora ilość czasu i nerwów...

    .................................................................................................................
    3.
    Można grupować zadania wg nazwiska i czasów. Wyglądałoby to mniej więcej tak (dla wierszy 13 do 16):

    Odp>>Kod zadania można w zasadzie ukryć, jest tylko ważna ilość zadań przypisana do kodu (konkretnie chodzi o liczbę przedmiotów które trzeba przynieść dla określonego kodu)

    .................................................................................................................

    Sortowanie kodów:
    Żeby później nie zgubić grupowania, należałoby (makro) rozpocząć od posortowania.

    Odp>> Dokładnie tak bym to widział jak zobrazowałeś, zauważyłem jednak własny błąd w wypełnieniu czasu dla powrotu w wierszu 13. Oczywiście wiersze 1 do 12 i 17 do 20 mają podobne zdublowania czasów. Wszystkie inne powinny zostać bez zmian jak mi logika nakazuje. Proszę jednak o zanegowanie jeżeli się mylę.
  • Pomocny post
    Moderator Programowanie
    Na obrazku efekt działania makra. Dane wejściowe z załącznika. Sprawdź, czy o to Ci chodzi (liczby w kolumnach D i F są sumowane).

    Excel 2003, makro szukające określonyc wierszy w kolumnie.
  • Poziom 9  
    Tak, wszystko co widzę wyżej jest właśnie tym o co mi chodzi. Zauważyłem drobiazg jednak, otóż w kolumnie F jest suma, podobnie jak w D. Potrzeba mi jednak w kolumnie F sumy, która będzie podzielona przez liczbę kodów (w tym przypadku 2, w innym natomiast być może >2). No i stale myślę jednak o scalaniu komórek tak, by całość była bardziej czytelna, mam tu na myśli np. wiersz 16 i 17 z powyższego screena. Gdyby tak dla wierszy: 16 i 17, 8 do 10, 4 i 5 w kolumnach ABCDF to scalić pomijając kody, które by świadczyły o ilości zadań (czyli jest to ów podzielnik sumy dla kolumny F). Czy to ma sens i byłoby nie tylko dla mnie czytelne, proszę o ocenę lub poradę. Ponowne dzięki!
  • Pomocny post
    Moderator Programowanie
    derekyoung napisał:
    scalić pomijając kody
    Och, nie chce mi się już przerabiać (czytaj: znacznie upraszczać kodu, bo tablica w takim przypadku jest zbędna). Dołożyłem scalanie, podkreślanie i takie tam... Resztę sobie dopracuj.

    Makro wystarczy uruchomić z poziomu arkusza źródłowego (dla ułatwienia dałem przycisk). Na "przywitanie" dostałeś (prawie) gotowca. Ale następnym razem spróbuj trochę samodzielnie.

    No i na koniec zła wiadomość: Makro pisałem w E2007 i na 99% "pójdzie" w E2k. Pozostaje 1% niepewności.
    p.s. Tym razem 3 pkt. dla mnie...
    Załączniki:
  • Poziom 9  
    Wszystko działa poprawnie, zrobiłeś dokładnie to czego potrzebuję by sprawniej funkcjonować w pracy. 100% satysfakcji!!! Bardzo jestem wdzięczny. BARDZO.