Która komórka ma najwiecej znaków? formuła?

Użytkowanie arkusza kalkulacyjnego
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Która komórka ma najwiecej znaków? formuła?

Post autor: Dawidek990 »

Witam, mam takie pytanie, mam 5 kolumn, i w kazdym wierszu kolumny znajduje sie dana nazwa jak w zalaczniku.
Co zrobic zeby w kolumnie G, lub jakiejs innej dalej, fomula wskazala mi ktora komorka ma najwiecej znakow, ew najwiecej znaku ">" i ja mi pokazal, lub wyindeksowal?
Czyli cos w stylu: wskaz ktora komorka ma najwiecej znakow, lub znaku ">" i pokaz ja.
Załączniki
kategorie chwilowy.ods
(14.06 KiB) Pobrany 164 razy
OpenOffice 4.1.6 Windows 10
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Która komórka ma najwiecej znaków? formuła?

Post autor: Rafkus »

Odpowiem na to pytanie:
Dawidek990 pisze:ktora komorka ma najwiecej znakow,
Wymyśliłem taką formułę macierzową, wklej do jakiejś komórki poniższą formułę i zatwierdź ją wciskając jednocześnie klawisze CTRL+Shift+Enter:

Kod: Zaznacz cały

=MAKS(JEŻELI(DŁ(A1:F1)=MAKS(DŁ(A1:F1));KOLUMNA(A1:F1) ;0))
Wynikiem tej formuły będzie numer kolumny w której jest wpisanych najwięcej znaków.
Jak to działa:
Dla danego zakresu (A1:F1) jest tworzona macierz danych, w której jest wartości zależą od ilości znaków występujących w danej komórce DŁ(A1:F)). Jeżeli jest ona największa MAKS(DŁ(A1:F1)) zostaje podana informacja w której kolumnie się ona znajduje, w przeciwnym razie jest ustawiana wartość 0. Z tak utworzonego zbioru danych wybierana jest znowu wartość maksymalna, dlatego jeżeli wystąpi kilka wartości maksymalnych zostanie podana ostatnia wartość maks.

Ponieważ jest to formuła macierzowa zwykłe przeciągniecie formuły do poniższych komórek nie podziała. Podczas przeciągania należy mieć wciśnięty klawisz CTRL
Dawidek990 pisze:ew najwiecej znaku ">"
w tym przypadku można postąpić analogicznie, z tym że trzeba będzie obliczyć ile jest tych znaków ">". Do tego celu wykorzysta się formuły:
DŁ(A1) - oblicza liczbę znaków z komórki;
PODSTAW(A1;">";"") - zamień znaki ">" na "", czyli są usunięte wszystkie znaki ">"
DŁ(A1) - DŁ(PODSTAW(A1;">";"")) - ta formuła obliczy o ile znaków nowy ciąg jest krótszy.

Czyli:

Kod: Zaznacz cały

=MAKS(JEŻELI((DŁ(A1:F1)-DŁ(PODSTAW(A1:F1;">";""))) =MAKS (DŁ(A1:F1)-DŁ(PODSTAW(A1:F1;">";""))) ;KOLUMNA(A1:F1);0))
Pamiętaj:
zatwierdź formuły wciskając jednocześnie klawisze CTRL+Shift+Enter
Podczas przeciągania formuł należy mieć wciśnięty klawisz CTRL
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Która komórka ma najwiecej znaków? formuła?

Post autor: Jermor »

Tak trochę z ciekawości przyjrzałem się tematowi.
Oto moja propozycja znajdowania komórki, która zawiera najwięcej znaków.
Tak jak i @Rafkus wykorzystałem formułę macierzową. Ostateczny kształt w załączonym pliku.
Najpierw wyznaczam ten adres komórki w wierszu, w którym jest najwięcej znaków. Ta formuła wygląda tak:

Kod: Zaznacz cały

{=ZNAK(PODAJ.POZYCJĘ(MAKS(DŁ(A1:F1));DŁ(A1:F1);0)+64)&WIERSZ(A1)}
Ona wyznacza od razu adres komórki. PODAJ.POZYCJĘ określa na którym miejscu wektora długości znajduje się wartość maksymalna. W przypadku tego rozwiązania może to być liczba od 1 do 6. Ponieważ kod litery "A" to 65, to do stałej 64 dodaję otrzymaną pozycję i tak utworzona liczba jest argumentem funkcji ZNAK uzupełnionej o numer wiersza , w którym formulę zbudowano.
W ten sposób utworzyłem wektor adresów komórek o najdłuższych tekstach w poszczególnych wierszach.
Następnie wyznaczam adres komórki, w której jest najwięcej znaków w całym tym obszarze. To realizuje także formuła macierzowa:

Kod: Zaznacz cały

{=INDEKS(G1:G5;PODAJ.POZYCJĘ(MAKS(DŁ(ADR.POŚR(G1:G5)));DŁ(ADR.POŚR(G1:G5));0);1)}
Tutaj funkcja INDEKS zwraca zawartość tej komórki wektora wynikowego otrzymanego z poprzednich formuł, która odpowiada najdłuższemu tekstowi.
Przykład w załączniku.
Załączniki
Dawidek990 kategorie chwilowy.ods
(14.71 KiB) Pobrany 145 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.
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Która komórka ma najwiecej znaków? formuła?

Post autor: Rafkus »

Pozwolę sobie usprawnić nieco pierwszą formułę @Jermora:

Kod: Zaznacz cały

{=ADRES( WIERSZ(C1);  PODAJ.POZYCJĘ( MAKS(DŁ(A1:F1));  DŁ(A1:F1);  0);  4)}
Ciągle jest to formuła macierzowa.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Która komórka ma najwiecej znaków? formuła?

Post autor: Jermor »

@Rafkus - super!
Dalsze uproszczenie, wynikające z tego, że wynik jest w tym samym wierszu może polegać na opuszczeniu argumentu funkcji WIERSZ.
No i oczywiście wykorzystując ten schemat można łatwo utworzyć formułę znajdująca najwięcej znaków ">"

Kod: Zaznacz cały

=ADRES(WIERSZ();PODAJ.POZYCJĘ(MAKS(DŁ(A1:F1)-DŁ(PODSTAW(A1:F1;">";"")));DŁ(A1:F1)-DŁ(PODSTAW(A1:F1;">";""));0);4)
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.
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Która komórka ma najwiecej znaków? formuła?

Post autor: Jan_J »

Rafkus pisze:

Kod: Zaznacz cały

{=ADRES( WIERSZ(C1);  PODAJ.POZYCJĘ( MAKS(DŁ(A1:F1));  DŁ(A1:F1);  0);  4)}
Piękne; kluczowe jest obliczenie pozycji maksimum w locie:

Kod: Zaznacz cały

PODAJ.POZYCJĘ( MAKS(DŁ(obszar));  DŁ(obszar);  0)
Reszta to opakowanie.
Można by próbować zdobyć adresy wszystkich takich wystąpień, ale wątpię czy jest to temat warty opracowywania formułą.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ