[SOLVED] Korekta daty
[SOLVED] Korekta daty
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.
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 68 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
Re: Korekta daty
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ą.
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ę.
Kod: Zaznacz cały
=NR.SER.DATY(E5;G5)+(DZIEŃ.TYG(BIEŻĄCY();2)=6)+(DZIEŃ.TYG(BIEŻĄCY();2)>6)
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.8.2 (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.
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.
Re: Korekta daty
Genialne, pół linijki kodu a co potrafi!
Dziękuję za pomoc.
Kurde, nie wiedziałem, że potrafię napisać skomplikowaną formułę.
Dziękuję za pomoc.
LibreOffice 7.3.2.2 (x64) na Windows 11
Re: [SOLVED] Korekta daty
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".
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 70 razy
AOO 4.1.15, LO 24.8.2 (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.
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.
Re: [SOLVED] Korekta daty
Dziękuję w imieniu swoim i użytkowników.
Tymczasem zauważyłem, że formuła
w Excel 2013 powoduje błąd
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)
i w komórce z nową datą jest '#NAZWA?'.Formuła zawiera nierozpoznany tekst.
LibreOffice 7.3.2.2 (x64) na Windows 11
Re: [SOLVED] Korekta daty
Ponieważ w Excelu nie ma funkcji BIEŻĄCY().
W nim formuła musi być taka:
w tej formule:
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)
- d_p to data początkowa
- mce to liczba miesięcy
AOO 4.1.15, LO 24.8.2 (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.
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.
Re: [SOLVED] Korekta daty
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
Re: [SOLVED] Korekta daty
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ę.
=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.8.2 (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.
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.
Re: [SOLVED] Korekta daty
Nie zupełnie, coś takiego mam teraz w kolumnie "H".Czyli chciałbyś mieć przyciski z literami alfabetu, które klikasz a w wyniku tego pojawi się odpowiednia lista.
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
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.klikasz i masz pierwszą pozycję z danego zbioru w pierwszym (tutaj 5 rzędzie)
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.
W Excelu powinny działać podstawowe funkcje, ta akurat nie musi.chciałbyś, aby ten plik dał się obsługiwać zarówno w Calcu, jak i w Excelu
Mam nadzieję, że Moderator nie połączy tematów.
- Załączniki
-
- pit_2.ods
- (34.6 KiB) Pobrany 70 razy
LibreOffice 7.3.2.2 (x64) na Windows 11