[SOLVED] Formuły tablicowe

Użytkowanie arkusza kalkulacyjnego
esima
Posty: 11
Rejestracja: wt lut 07, 2017 10:02 am

[SOLVED] Formuły tablicowe

Post autor: esima »

Mam problem z formułami tablicowymi, a bardziej z Libreofficem. Do wersji 5.3.5 formuła działa prawidłowo. Na wyższej wersji otrzymuję wynik #N/A.
Formuła ma znaleźć najwyższą wartość z kolumny B dla takich samych wartości w kolumnie A i zapisać w C
np.

A B C
0 10 10
1 11 11
3 5 7
3 7 7

Formuła ma postać
{MAX((a$1:a$60=a1)*(b$1:B$6))}
Proszę o pomoc. Lubię mieć zaktualizowane oprogramowanie, ale przez ten błąd musiałem się cofnąć do starej wersji.
Ostatnio zmieniony czw lut 08, 2018 1:19 pm przez esima, łącznie zmieniany 1 raz.
LibreOffice 5.3 na Windows 10 i macos
Jan_J
Posty: 4559
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Formuły tablicowe

Post autor: Jan_J »

Powinna działać i wygląda że działa poprawnie na 5.4.
Pod warunkiem, że A, B, C z przykładu są nagłówkami kolumn, a nie danymi w pierwszym wierszu...
N/A jest kodem błędu wyszukiwania. Może jest spowodowany czym innym niż zamieszczoną formułą?
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
esima
Posty: 11
Rejestracja: wt lut 07, 2017 10:02 am

Re: Formuły tablicowe

Post autor: esima »

dziękuję za odowiedź
ABC to oczywiście nagłówki kolumn.
U mnie na od 5.3.7 wywala błąd. Bez zatwierdzania enterem, a nie jako formuła tablicowa {} niby działa, ale wyświetla niepoprawne wartości.
LibreOffice 5.3 na Windows 10 i macos
esima
Posty: 11
Rejestracja: wt lut 07, 2017 10:02 am

Re: Formuły tablicowe

Post autor: esima »

Podjąłem kolejną próbę. Tym razem z wersją 6.0.3 na macos. Niestety też nie działa.

Poniżej zdjęcia z kreatora funkcji z wersji niższej niż 5.3.5, (windows), ale wersja systemu nic nie zmienia (próbowałem).
Obrazek


A tu w wersji 6.0.3 już nie działa.
Obrazek
LibreOffice 5.3 na Windows 10 i macos
Jan_J
Posty: 4559
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Formuły tablicowe

Post autor: Jan_J »

Formuła tablicowa A1:C5=5 generuje tablicę zer/jedynek; jedynki są w miejscach, w których w odpytywanym obszarze występuje wartość 5.
Formuła tablicowa (A1:C5=5)*(A11:C15) generuje tablicę, w której są zera i niekoniecznie-zera; zera są tam, gdzie w A1:C5 nie ma piątki, a w pozostałych komórkach mamy kopię liczby z drugiego obszaru.
Formuła tablicowa maks((A1:C5=5)*(A11:C15)) generuje pojedynczą liczbę, która w zamyśle jest maksimum z tych pól drugiego obszaru, dla któych w pierwszym obszarze wpisana jest 5. Są to wyrażenia standardowej składni tablicwowej, łaski nie robią.

Jednak ponieważ maksimum jest brane po całym obszarze, jeśli wystąpią w nim (logiczne) zera, to wynik nie będzie ujemny, nawet gdyby w dorugim obszarze wszystkie wartości były ujemne. Moim zdaniem jest to błąd logiczny, ale być może ci on nie przeszkadza, jeśli wiesz, że masz do czynienia wyłącznie z danymi dodatnimi.

Więc: co nie działa?
czy kreator -- element interfejsu użytkownika, pomocny lecz niekonieczny dla wpisania formuły?
czy formuła -- generuje błąd, albo niepoprawny wynik?
czy coś jeszcze innego?
Spróbuj wpisać albo wkleić tekst formuły do pola bez użycia kreatora i zatwierdzić <Ctrl+Shift+Enter>. Jeśli się uda, winien jest kreator. Jeśli tekst formuły zostanie rozpoznany jako błędny, albo co gorsza zostanie on zmieniony, winien jest analizator w kompilatorze formuł. Jeżeli zaś formuła zostanie przyjęta, ale daje błędny wynik, winien jest zapewne kompilator, generujący niepoprawną strukturę dla silnika obliczeniowego. Przypadek 1. jest najbardziej prawdopodobny, i jednocześnie najmniej poważny.

Calc w wersji 6.x jest jeszcze rozwojowy. Może zawierać błędy, i to elementarne. Ważne jest, by je zidentyfikować i zgłosić, niezależnie od tego, na którym poziomie występują.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
esima
Posty: 11
Rejestracja: wt lut 07, 2017 10:02 am

Re: Formuły tablicowe

Post autor: esima »

Formuła tablicowa A1:C5=5 generuje tablicę zer/jedynek; jedynki są w miejscach, w których w odpytywanym obszarze występuje wartość 5.
Formuła tablicowa (A1:C5=5)*(A11:C15) generuje tablicę, w której są zera i niekoniecznie-zera; zera są tam, gdzie w A1:C5 nie ma piątki, a w pozostałych komórkach mamy kopię liczby z drugiego obszaru.
Formuła tablicowa maks((A1:C5=5)*(A11:C15)) generuje pojedynczą liczbę, która w zamyśle jest maksimum z tych pól drugiego obszaru, dla któych w pierwszym obszarze wpisana jest 5. Są to wyrażenia standardowej składni tablicwowej, łaski nie robią.
Dziękuję. Też tak to rozumiem i tak to działa na "starszych" wersjach. U mnie wartości z drugiego pola przyjmują wartości dodatnie lub #N/A.

Calc w wersji 6.x jest jeszcze rozwojowy.
Tak, wiem. Spróbowałem tej wersji aby zobaczyć czy moja formuła na tej wersji działa.

Co nie działa?
- Odinstalowałem nową wersję, ale z tego co pamiętam to na nowszej wersji formuła przy zatwierdzeniu jako tablicowa wywala #N/A, przy zatwierdzeniu tylko enterem działa, ale wyświetla nie poprawne wartości, tzn. nie uwzględnia parametrów z pierwszego pola. Wyświetlana jest wartość #N/A bez względu na to czy formuła jest zatwierdzana z kreatora czy z paska.

Czy jakąś wskazówką może być to że (co widać na screenach):
- w wersji <5.3 w kreatorze w strukturze jest: BQ$11:BQ$60 = {2;2;0;0;0;0;0;...}
- w wersji >5.3 w kreatorze w strukturze jest: BQ$11:BQ$60 = 0 {2;2;0;0;0;0;0;...}
LibreOffice 5.3 na Windows 10 i macos
Jan_J
Posty: 4559
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Formuły tablicowe

Post autor: Jan_J »

esima pisze:Czy jakąś wskazówką może być to że (co widać na screenach):
- w wersji <5.3 w kreatorze w strukturze jest: BQ$11:BQ$60 = {2;2;0;0;0;0;0;...}
- w wersji >5.3 w kreatorze w strukturze jest: BQ$11:BQ$60 = 0 {2;2;0;0;0;0;0;...}
Ale to jest tylko kreator. W zasadzie zbędny wodotrysk, a sam może zawierać błędy.
Najważniejsze, czy
a. istniejące i działające dotąd formuły przestały działać bez modyfikacji ich treści;
b. formuła wprowadzona w postaci tekstu, bez kreatora, działa czy nie;
c. czy kreator otwarty na istniejącej formule "psuje" ją;
d. czy to psucie polega tylko na mylnym wyświetleniu struktury, czy też psuje ją naprawdę.
Podgląd formuł mamy albo w kontrolce/wierszu wprowadzania zawartości do komórki, albo po <Ctrl>+<~> we wszystkich komórkach (być może trzeba powiększyć ich szerokość, żeby było coś widać).
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
esima
Posty: 11
Rejestracja: wt lut 07, 2017 10:02 am

Re: Formuły tablicowe

Post autor: esima »

a. istniejące i działające dotąd formuły przestały działać bez modyfikacji ich treści;

TAK, wcześniej działały, na nowszej wersji LO nie działają. Po zapisie pliku w nowej wersji i jego otwarciu w starej nadal działa.
formuła wprowadzona w postaci tekstu, bez kreatora, działa czy nie;
Nie działa
czy kreator otwarty na istniejącej formule "psuje" ją;
Nie, w starej wersji LO nadal będzie działać
czy to psucie polega tylko na mylnym wyświetleniu struktury, czy też psuje ją naprawdę.
Tylko źle wyświetla strukturę i nie daje wyniku.

Okroiłem funkcję do postaci {MAX(zakres)} i też nie działało do momentu gdy w zakresie komórki zawierały błędy #N/D (#N/A w ang.)


Dobra doszedłem co i jak.
Do wersji LO 5.3.5 funkcja MAKS (MAX w ang.) wartości #N/D (#N/A w ang.) pomijał. Na pewno od wersji 5.3.7 funkcja max przestała te wartości pomijać.
Wystarczyło dla sprawdznego przez funkcję maks zakresu zrobić test czy.błąd ładnie ubrany w funkcję jeżeli.
Teraz działa na nowych wersjach i na starych.
Dziękuję Jan_J za pomoc.
LibreOffice 5.3 na Windows 10 i macos
ODPOWIEDZ