zablokowanie daty

Użytkowanie arkusza kalkulacyjnego
omeqaa
Posty: 2
Rejestracja: wt paź 05, 2021 3:56 pm

zablokowanie daty

Post autor: omeqaa »

Cześć. Czy ktoś może ma pomysł i mógłby mi pomóc stworzyć formułę, która zwróci nieaktualizującą się bieżącą datę, po zajściu jakiegoś warunku, np. gdy dwie komórki są sobie równe. Chodzi o to, aby data nie aktualizowała się po ponownym otwarciu formularza. Załóżmy że w kom. A1 mamy wartość x, gdy dodamy do kom. A2 wartość x w komórce A3 pojawi się statyczna data odpowiadająca bieżącej. Taka zagadka :o

Myślę, że coś jak, =jeśli (A1=B1;DZIŚ;0) - tylko jak to "dziś" zablokować.
Awatar użytkownika
Rafkus
Posty: 516
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: zablokowanie daty

Post autor: Rafkus »

Tak się nie nie da tego zrobić funkcje zawsze przeliczają wartości.

Jedyna opcja jaka przychodzi mi do głowy to napisanie własnej procedury (makra)...
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
omeqaa
Posty: 2
Rejestracja: wt paź 05, 2021 3:56 pm

Re: zablokowanie daty

Post autor: omeqaa »

Wiedziałam, że łatwo nie będzie. Dzięki za odpowiedź.
apache OpenOffice 4.1.5, windows 10
Awatar użytkownika
Jermor
Posty: 2255
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: zablokowanie daty

Post autor: Jermor »

Jeżeli data bieżąca ma pojawić się w kolumnie C1, to można wpisać następującą formułę:

Kod: Zaznacz cały

=JEŻELI(A1=B1;JEŻELI(NIE(CZY.PUSTA(C1));DZIŚ();C1);C1)
Nie jest to wstawienie daty statycznej, lecz formuła, która wstawi datę tylko raz.
Jednak jest to możliwe tylko przy włączonej opcji "Narzędzia -> Opcje -> LibrOffice Calc -> Oblicz -> Iteracje"
Po wprowadzeniu formuły, gdy liczby A1 i B1 są różne, wynikiem formuły jest 0. Aby uniknąć wyświetlania tego zera, komórce można przypisać formatowanie warunkowe, w którym zastosujemy wyświetlanie liczb własnym formatem, w którym nie będzie zer prowadzących. Czyli format w postaci jednego znaku: "#".
Nie można wprost przypisać takiego formatu komórce, bo co prawda zero nie będzie widoczne, ale po pojawieniu się daty, będzie ona pokazana jako zwykła liczba. Natomiast sformatowanie tej komórki od razu na datę spowoduje, że 0 będzie interpretowane jako data 30.12.1899 roku.
AOO 4.1.15, LO 7.5.9 (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.
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: zablokowanie daty

Post autor: Jan_J »

Stary temat, podobny problem, podobne rozwiązanie by @Smaigas:
https://forum.openoffice.org/pl/forum/v ... 710&p=7262
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2255
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: zablokowanie daty

Post autor: Jermor »

Temat rzeczywiście stary. Nie widziałem go. W rozwiązaniu @Smaigas po usunięciu wartości znika także data. @omeqaa chciała, żeby data po zmianie czegokolwiek już się nie zmieniała. Lecz metoda jest ta sama, to znaczy z wykorzystaniem iteracji.
Dzisiaj to, czego chciał ówczesny autor postu, prościej jest zrealizować wbudowanym do LibreOffice skrótem klawiaturowym CTRL+;. W czasie gdy ten stary problem się pojawił, prawdopodobnie takiego skrótu nie było, a w Apache OpenOffice nie ma go do dzisiaj.
Także jestem zwolennikiem unikania obliczeń iteracyjnych gdy nie jest to bezwzględnie konieczne.
Wydaje mi się, że są tylko dwie funkcje, które nie zmieniają wyników przy zmianie danych czy wczytywaniu pliku Calc-a. Obie pojawiły się w LIbreOffice (chyba już w wersji 6.) i dotyczą wygenerowania liczb losowych. Jedna to LOS.NIEUL() a druga to LOS.ZAKR.NIEUL() angielskie odpowiedniki, to RAND.NV() i RANDBETWEEN.NV(), generują one liczby losowe, które nie zmieniają się już podczas pracy z arkuszem.
AOO 4.1.15, LO 7.5.9 (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.
ODPOWIEDZ