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

[Rozwiązano] [Excel] - Wskazywanie łącznego czasu trwania zazębiających się zdarzeń

slawek1100 01 Lut 2018 16:45 339 13
  • #1 01 Lut 2018 16:45
    slawek1100
    Poziom 8  

    Cześć,

    stoję przed problemem określenia łącznego czasu trwania zazębiających się / równoległych zdarzeń (tu: promocji). Chodzi o to by określić łączny czas trwania promocji w przypadku gdy pokrywają się one lub zaczynają jedna po drugiej zaraz na drugi dzień. Udało mi się określić datę końca ale mam problem z początkiem. Załączam przykład danych, chodzi mi by w kolumnie F pojawiła się data ostatniej "łącznej" promocji na dany indeks (w ramach jednego indeksu data ta musi być stała) i tak dla indeksu 1 powinno być od 2015-11-01 do 2016-12-31 a dla indeksu 10 od 2017-01-01 do 2017-08-31.

    Czy możecie mi w tym pomóc? Z góry dziękuję

    0 13
  • #3 01 Lut 2018 21:06
    slawek1100
    Poziom 8  

    Ok, ale ... jak widzisz jest przerwa między pierwszymi promocjami i one nie powinny być zaliczone do danego okresu promocyjnego. Specjalnie przygotowałem taki przykład bo on przysparza mi najwięcej problemów :( Nie wiem jak z pomocą formuły "odrzucić" tę promocję i jednocześnie dla wszystkich indeksów wskazać ostatni, nieprzerwany okres promocyjny.

    0
  • #5 01 Lut 2018 22:04
    Prot
    Poziom 27  

    slawek1100 w poście #1 napisał:
    chodzi mi by w kolumnie F pojawiła się data ostatniej "łącznej" promocji na dany indeks


    slawek1100 w poście #3 napisał:
    jest przerwa między pierwszymi promocjami i one nie powinny być zaliczone do danego okresu promocyjnego


    Tu jest problem :D - masz kłopot w precyzyjnym sformułowaniu warunków zadania :crazyeyes:

    W konstrukcji mojej formuły wystarczy wprowadzić koniunkcję drugiego warunku D2<=C3 :ok:

    BTW Twoja formuła w kolumnie G jest "niesterowalna" i "nieprzewidywalna" - spróbuj np zmienić datę w komórce D18 na 2017-08-25 - przerwa w ciągłości promocji lecz formuła nie zareaguje :not:

    0
  • #6 01 Lut 2018 23:53
    slawek1100
    Poziom 8  

    rajszym, ok ale pierwsza promocja w ramach danego indeksu otrzymuje swój czas trwania, a pozostałe pokrywające się lub następujące po sobie mają inną wartość, chodzi o to by w ramach danego indeksu wskazać jedną datę startu i jedną datę stopu

    Prot, myślałem że pisząc "data ostatniej "łącznej" promocji" miałem na myśli promocje które pokrywają się lub następują po sobie zaraz na drugi dzień i nie mają okresów przerw (braku promocji). Dla mnie cała trudność to by w ramach wszystkich wierszy dla danego indeksu podawany był jedna data startu promocji (nawet w przypadku gdy daną promocję nie biorę pod uwagę: prom6 i prom10), bo po nich następuje okres bez promocji. Próbuje dojść do momentu gdy wszystkie indeksy dostaną daty jak w pierwszym poście.
    Co do warunku ORAZ dla "D2<=C3" to sorry ale nie bardzo mam pomysł jak zastosować go w formule (umysł już poszedł spać :(), próbowałem w JEŻELI i przed nim ale nic mi nie idzie. Mógłbyś podrzucić jak to sklecić.
    Co do uwagi "formuła w kolumnie G jest "niesterowalna" i "nieprzewidywalna" to się z nią nie zgodzę, zmieniłem datę i dalej formuła działa jak powinna, prom18 trwa teraz do 25 sierpnia i częściowo pokrywa się z prom16, która trwa do 31 sierpnia, czyli koniec wszystkich promocji, które pokrywają się lub następują po sobie zaraz na drugi dzień i nie mają okresów przerw to właśnie31 sierpnia.
    Dlatego załączyłem wykresy by pokazać o jakie okresy od / do mi chodzi.

    0
  • #7 02 Lut 2018 11:58
    Maciej Gonet
    Poziom 31  

    Moja propozycja rozwiązania za pomocą funkcji UDF Daty, wykorzystującej unię zakresów.
    Funkcja jest tablicowa, zwraca od razu datę początkową i końcową.
    Wywołanie:

    Kod: text
    Zaloguj się, aby zobaczyć kod
    Zaznaczyć 2 komórki poziomo i zatwierdzić Ctrl+Shift+Enter.

    0
  • #8 02 Lut 2018 12:29
    slawek1100
    Poziom 8  

    Maciej Gonet wygląda to dobrze, ale w takim rozwiązaniu muszę ręcznie ustawiać zakres dat dla danego indeksu, może można to w jakiś sposób stworzyć bardziej uniwersalne by nie było potrzeby szukać zakresu dat dla poszczególnych indeksów oraz, jak można, to najlepiej zaznaczyć całą kolumnę z danymi i nie martwić się o zmianę zakresów danych w formule

    0
  • #9 02 Lut 2018 12:34
    Maciej Gonet
    Poziom 31  

    W załączniku zmieniona wersja z 4 argumentami:
    1. - numer Id
    2. - kolumna Id
    3. - kolumna dat początkowych
    4. - kolumna dat końcowych.
    Przy dużej liczbie danych, to będzie trochę nieefektywne, bo te same obliczenia będą wykonywane wielokrotnie. Lepiej zrobić sobie osobną tabelkę na wyniki, gdzie poszczególne numery Id będą występować jednorazowo.
    PS. Poprawiłem błąd w załączniku. Danych nie trzeba sortować.

    0
  • #10 02 Lut 2018 13:18
    slawek1100
    Poziom 8  

    Ogólnie rzecz biorąc są wymieszane, ale nic nie stoi na przeszkodzie by je najpierw posortować po indeksie i po dacie startu

    Dodano po 40 [minuty]:

    Jest ok... prawie, po testach zauważyłem że gdy zmienię w przykładzie w wierszach 5:10 numer Id na np. "2" to indeks 1 i 10 ma właściwe daty ale indeks 2 ma niewłaściwą datę startu pierwszej promocji. Otrzymuję wynik 2016-04-25 a powinno być 2016-02-25 (prom 3 kończy się po rozpoczęciu prom 4, czyli zazębiają się one)

    0
  • #11 02 Lut 2018 13:32
    Maciej Gonet
    Poziom 31  

    Proszę załączyć ten plik z nowymi danymi. Czy to jest ta aktualna wersja pliku? Bo ja ten plik wymieniłem (był błąd).

    0
  • #14 02 Lut 2018 14:07
    slawek1100
    Poziom 8  

    Teraz jest super, dzięki bardzo

    0