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.

[Rozwiązano] Makro znajdujące liczbę do której są przypisane 3 kolejne daty

19 Mar 2020 15:24 234 13
  • Poziom 3  
    Cześć

    Jestem kompletnie zielona jeśli chodzi o VBA a potrzebuję takie stworzyć pilnie do pracy :(
    Sprawa wygląda tak - jest baza danych gdzie w kolumnie A jest unikatowy kod klienta a w kolumnie B daty. Np:
    Kolumna A Kolumna B
    2345 12/03/2020
    3434 13/03/2020
    5555 14/03/2020
    2345 13/03/2020
    2345 14/03/2020

    Daty i numery doklejane są codziennie nowe.
    Potrzebuję makra które sprawdzi czy dla tego samego numeru są 3 następujące po sobie daty. Np dla numeru 2345 są daty 12/03/2020, 13/03/20 i 14/03/2020. Gdy taki przypadek się pojawi makro powinno skopiować te linijki i wkleić do innej zakładki.

    Bardzo bardzo proszę o pomoc!
  • Poziom 34  
    Najlepiej sprawdzić czy występuje więcej niż 1 dany numer jeśli tak to przefiltrować dane.
  • Poziom 3  
    A jak powinna wyglądać formuła sprawdzająca warunek 3 kolejnych dat? Dla tego zadania to jest niestety kluczowe :(
  • Moderator - Komputery Serwis
    Czy daty muszą być kolejne, w sensie dzień w dzień? Czy kolejne, ale nie ma znaczenia, jeśli będzie przerwa dzień lub więcej?
  • Poziom 3  
    Ważne jest żeby były kolejno np. 16/03, 17/03, 18/03. Jeśli sytuacja wyglądałaby np tak 16/03, 18/03, 19/03 wtedy to nas nie interesuje. Warunkiem jest że musi być że 3 kolejne daty muszą być przypisane dla tej samej liczby
  • Moderator - Komputery Serwis
    Teraz jeszcze dwie kwestie.
    W jaki sposób jest zapisywana data? Czy ona jest zapisana w komórkach prawidłowo sformatowanych jako data, czy jest ona zapisywana w ciągu takim jak w przykładzie - jeśli w takim ciągu, to będzie ona nieprawidłowo interpretowana na domyślnych ustawieniach jako data w stylu amerykańskim, czyli miesiąc/dzień/rok, a nie rok/dzień/miesiąc i trzeba będzie to wziąć pod uwagę. Przykładowy plik by się przydał, z realnymi danymi - mogą być oczywiście zanonimizowane, tzn poza kolumnami A i B reszta może być usunięta.

    Co miałoby się dziać gdyby zostały znalezione dla jednego ID cztery daty z rzędu? Albo 6?
  • Poziom 3  
    Data zapisywana jest w komórkach sformatowanych jako short date i jako dzień/miesiąc/rok. Jedna komórka = jedna data. Pracujemy na ustawieniach UK. Faktycznie gdy ktoś ma ustawienia amerykańskie pojawiają się problemy jeśli chodzi o makra - inne separatory itd.
    Niestety nie mam teraz przykładowego pliku ale dwie kolumny A i B wyglądają tak:
    A B
    1. 2424 12/03/2020
    2. 1111 12/03/2020
    3. 3423 11/03/2020
    4. 2424 13/03/2020
    5. 1111 14/03/2020
    6. 3423 13/03/2020
    7. 4445 14/03/2020
    8. 2424 14/03/2020

    3 kolejne daty to minimalna ilość od której makro ma taki przypadek wyłapać i przekleić do innej zakładki. Także jeśli dat będzie więcej, to o ile będą one kolejno po sobie dzień po dniu, również mają zostać wyłapane i przeklejone.
  • Pomocny post
    Moderator - Komputery Serwis
    Zobacz makro z przykładowego załącznika. Jest pewnie dalekie od ideału i ze względu na to, że wrzuciłem tam pewnie kilka założeń za dużo, to się trochę zbędnie skomplikowało.

    Optymalne szczególnie też nie jest, ale brak wszystkich możliwych założeń uniemożliwia jakiekolwiek optymalizacje.
    Makro powinno sobie poradzić z dowolnym formatem daty, o ile jest sformatowana jako data, a także z dowolnym ID (może być też literowe). Wykrywa nie tylko trzy następujące po sobie ciągi, ale 4, 5, czy więcej (o ile daty są dzień po dniu). Nawet jeśli daty w tabeli wejściowej nie są posortowane, makro tez sobie powinno poradzić (kosztem mniej optymalnego algorytmu, ale do kilkuset wpisów nie będzie to raczej przeszkadzać).

    Sprawdź i daj znać, przetestuj je na różnych danych. Zdziwię się, jeśli nie znajdziesz żadnych błędów :)
  • Pomocny post
    Poziom 35  
    monika3496 napisał:
    Potrzebuję makra które sprawdzi czy dla tego samego numeru są 3 następujące po sobie daty.

    No to makro koleżanka już ma od kolegi @dt1 :D
    Moim zdaniem takie zadanie można wykonać przy pomocy kilku formuł w arkuszu analitycznym :idea:
    Makro znajdujące liczbę do której są przypisane 3 kolejne daty2020-03...png Download (73.69 kB)
    i stworzyć łącza automatyczne w arkuszach klienckich do ustaleń analitycznych :spoko:
    Makro znajdujące liczbę do której są przypisane 3 kolejne daty2020-03-2..1).png Download (16.57 kB)

    W załączonym pliku przykładowym formuły przygotowane są na 3 "zbitki" czasowe (w założeniu analizy jednego miesiąca) i trzech klientów, ale wg tego schematu formuł można te rozmiary powiększyć :D

    ProtAnali..2.xlsx Download (17.83 kB)Punkty: 2 dla użytkownika
  • Poziom 3  
    Dziękuję Wam bardzo za pomoc! :)
  • Poziom 3  
    Jeszcze jedno pytanko… Wszystko działa tak jak trzeba tylko czy jest możliwoœć żeby po znalezieniu takich przypadków kopiowany był cały wiersz?
  • Pomocny post
    Poziom 35  
    monika3496 napisał:
    po znalezieniu takich przypadków kopiowany był cały wiersz?

    W rozwiązaniu "formułowym" przeniesienie danych z kliku innych kolumn, dzięki funkcji wyszukaj pionowo, też nie stanowi problemu :D
    Makro znajdujące liczbę do której są przypisane 3 kolejne daty2020-03...png Download (59.8 kB)

    Plik dostosowany do tego wariantu wymieniony w poprzednim poście.
  • Poziom 3  
    super! wszystko działa.
    Dziękuję bardzo za pomoc :)