[SOLVED] Korekta daty

Użytkowanie arkusza kalkulacyjnego
pit
Posty: 22
Rejestracja: sob lis 12, 2022 4:13 pm

[SOLVED] Korekta daty

Post 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.
Załączniki
pit.ods
(17.92 KiB) Pobrany 65 razy
Ostatnio zmieniony pn lis 14, 2022 12:53 pm przez pit, łącznie zmieniany 1 raz.
LibreOffice 7.3.2.2 (x64) na Windows 11
Awatar użytkownika
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Korekta daty

Post 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ę.
AOO 4.1.15, LO 24.2.5 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
pit
Posty: 22
Rejestracja: sob lis 12, 2022 4:13 pm

Re: Korekta daty

Post 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.
LibreOffice 7.3.2.2 (x64) na Windows 11
Awatar użytkownika
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: [SOLVED] Korekta daty

Post 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".
Załączniki
nowadata.ods
(31.46 KiB) Pobrany 65 razy
AOO 4.1.15, LO 24.2.5 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
pit
Posty: 22
Rejestracja: sob lis 12, 2022 4:13 pm

Re: [SOLVED] Korekta daty

Post 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?'.
LibreOffice 7.3.2.2 (x64) na Windows 11
Awatar użytkownika
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: [SOLVED] Korekta daty

Post 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
AOO 4.1.15, LO 24.2.5 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
pit
Posty: 22
Rejestracja: sob lis 12, 2022 4:13 pm

Re: [SOLVED] Korekta daty

Post autor: pit »

Bez zmian, ale tym się teraz nie będę przejmował tym bardziej, że to też nie działa.
LibreOffice 7.3.2.2 (x64) na Windows 11
Awatar użytkownika
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: [SOLVED] Korekta daty

Post 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ę.
AOO 4.1.15, LO 24.2.5 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
pit
Posty: 22
Rejestracja: sob lis 12, 2022 4:13 pm

Re: [SOLVED] Korekta daty

Post 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.
Załączniki
pit_2.ods
(34.6 KiB) Pobrany 68 razy
LibreOffice 7.3.2.2 (x64) na Windows 11
ODPOWIEDZ