Strona 1 z 1

[SOLVED] Korekta daty

: ndz lis 13, 2022 7:10 pm
autor: pit
Mam kolumny z datą początkową i końcową oraz przedziałem czasowym.
Ustawiam kursor w kolumnie "Początek" wciskam Ctrl+ ";" i w "Koniec" mam datę powiększoną o żądaną ilość miesięcy.
Zdarza się jednak, że data końcowa wypada w sobotę lub niedzielę a tego chciałbym uniknąć.
Zainstalowałem ggCalendar jednak korygując datę kasuję formułę i Ctrl+ ";" przestaje działać.
Czy można jakoś dodać do daty końcowej dzień lub dwa gdy wypadnie odpowiednio w niedzielę lub sobotę, albo ochronić formułę wprowadzając datę z kalendarza?
Dzięki za pomoc.

Re: Korekta daty

: ndz lis 13, 2022 9:03 pm
autor: Jermor
Owszem jest taka możliwość. Przy okazji zamiast tej skomplikowanej formuły proponuję inną funkcję. Całość wyznacza datę przesuniętą o podaną liczbę miesięcy, skorygowaną tak, aby wynikowy dzień nie był sobotą ani niedzielą.

Kod: Zaznacz cały

=NR.SER.DATY(E5;G5)+(DZIEŃ.TYG(BIEŻĄCY();2)=6)+(DZIEŃ.TYG(BIEŻĄCY();2)>6)
NR.SER.DATY() wyznacza datę o wskazaną liczbę miesięcy w przód lub w tył.
DZIEŃ.TYG() wyznacza numer dnia w tygodniu. Argument 2 mówi, że liczba 1 jest przypisana do poniedziałku.
BIEŻĄCY() jest funkcją podającą stan obliczeń do miejsca jej położenia.
Wyrażenia logiczne dają w wyniku arytmetyczną wartość 0 lub 1.
Zatem NR.SER.DATY wylicza datę końcową. Za pierwszym plusem DZIEŃ.TYG wyznacza numer dnia tej daty i jeśli jest to sobota (warunek logiczny=PRAWDA) dodaje 1 do tej daty, jeśli jest to niedziela, dodaje 0. Drugi człon DZIEŃ.TYG sprawdza, czy jest to niedziela, a jeśli tak dodaje drugą jedynkę.

Re: Korekta daty

: pn lis 14, 2022 12:53 pm
autor: pit
Genialne, pół linijki kodu a co potrafi!
Jermor pisze: ndz lis 13, 2022 9:03 pm zamiast tej skomplikowanej formuły proponuję inną funkcję
Kurde, nie wiedziałem, że potrafię napisać skomplikowaną formułę. :)

Dziękuję za pomoc.

Re: [SOLVED] Korekta daty

: pn lis 14, 2022 9:43 pm
autor: Jermor
Napisałem funkcję użytkownika, którą możesz zastosować w swoim projekcie.
Funkcja nazywa się NOWADATA(data, opcja) i ma dwa argumenty. "Data" jest dowolną datą. Funkcja podaje względem tej daty najbliższy, następny dzień roboczy. Dniami roboczymi są dni od poniedziałku do piątku. Wyznaczanie dnia roboczego uwzględnia także dni świąt obowiązujących w Polsce. Argument "opcja" decyduje o tym, czy do dni świąt zaliczyć także Wigilię Bożego Narodzenia. Zwyczajowo przyjęło się nie wyznaczać tego dnia jako terminu. Pominięcie tego argumentu lub wartość 1 oznacza, że wigilia ma być traktowana tak jak święto. Wartość 0 oznacza, że wigilia jest normalnym dniem roboczym.
Funkcję i przykład jej zastosowania załączam w pliku.
Opis ten oraz plik umieszczę także w zasobach serwisu w dziale "Projekty użytkowników".

Re: [SOLVED] Korekta daty

: śr lis 16, 2022 2:36 pm
autor: pit
Dziękuję w imieniu swoim i użytkowników.

Tymczasem zauważyłem, że formuła

Kod: Zaznacz cały

=NR.SER.DATY(E5;G5)+(DZIEŃ.TYG(BIEŻĄCY();2)=6)+(DZIEŃ.TYG(BIEŻĄCY();2)>6)
w Excel 2013 powoduje błąd
Formuła zawiera nierozpoznany tekst.
i w komórce z nową datą jest '#NAZWA?'.

Re: [SOLVED] Korekta daty

: śr lis 16, 2022 3:04 pm
autor: Jermor
Ponieważ w Excelu nie ma funkcji BIEŻĄCY().
W nim formuła musi być taka:

Kod: Zaznacz cały

=EDATE(d_p;mce)+2*(DZIEŃ.TYG(EDATE(d_p;mce);2)=6)+(DZIEŃ.TYG(EDATE(d_p;mce);2)=7)
w tej formule:
  • d_p to data początkowa
  • mce to liczba miesięcy

Re: [SOLVED] Korekta daty

: śr lis 16, 2022 3:18 pm
autor: pit
Bez zmian, ale tym się teraz nie będę przejmował tym bardziej, że to też nie działa.

Re: [SOLVED] Korekta daty

: śr lis 16, 2022 4:01 pm
autor: Jermor
Moja formuła działa, tylko że formułę Excelową należy wpisać w Excelu a ty prawdopodobnie zapisujesz plik przygotowany w Calcu jako Excel. A jeśli tak, to w Calcu musi być utworzona formuła, która nie będzie wykorzystywała funkcji BIEŻĄCY(), czyli będzie wyglądała tak:
=NR.SER.DATY(E5;G5)+2*(DZIEŃ.TYG(NR.SER.DATY(E5;G5);2)=6)+(DZIEŃ.TYG(NR.SER.DATY(E5;G5);2)=7)
Excell sam ją sobie przekonwertuje.


Co do "jednego kliknięcia", to dopiero teraz załapałem, o co ci chodziło. Czyli chciałbyś mieć przyciski z literami alfabetu, które klikasz a w wyniku tego pojawi się odpowiednia lista. Tego bez makra nie zrobisz. Na dodatek jak wynika z tego, co piszesz, chciałbyś, aby ten plik dał się obsługiwać zarówno w Calcu, jak i w Excelu co jeszcze bardziej komplikuje sytuację.

Re: [SOLVED] Korekta daty

: śr lis 16, 2022 8:58 pm
autor: pit
Czyli chciałbyś mieć przyciski z literami alfabetu, które klikasz a w wyniku tego pojawi się odpowiednia lista.
Nie zupełnie, :P coś takiego mam teraz w kolumnie "H".
Odznaczam "Wszystko" zaznaczam "C" i mam odpowiednią listę.
Napisałem tutaj , że działa to trochę nie tak jakbym chciał, ponieważ nie o wyselekcjonowaną listę mi chodzi tylko żeby gdy wybiorę "C" lista przewinęła się tak by Cybulski Piotr był w piątym rzędzie, jak kliknę "Ć" to w piątym rzędzie będzie Ćwiąkała Agata.
Pisałem o tym tutaj
klikasz i masz pierwszą pozycję z danego zbioru w pierwszym (tutaj 5 rzędzie)
Jan_J zaproponował tutaj rozwiązanie, które ze względu na konieczność użycia kombinacji klawiszy uznałem za nie do zaakceptowania, ale z chwilą gdy klawisz "Ctrl" przestał być potrzebny, piłka jest znowu w grze, o czym pisałem tutaj.
Teraz uwaga!
To rozwiązanie jest dobre i raczej lepszego nie będzie, co prawda nie przewija listy ale zaznacza komórkę, tu mogę pójść na kompromis. :)
Teraz chodzi już wyłącznie o to, żeby ciągle widzieć "A" gdy się kliknę "Z" o czym wspomniałem tutaj w punkcie drugim.
chciałbyś, aby ten plik dał się obsługiwać zarówno w Calcu, jak i w Excelu
W Excelu powinny działać podstawowe funkcje, ta akurat nie musi.

Mam nadzieję, że Moderator nie połączy tematów.