[solved] Zliczanie ciągów liczb i systematyzowanie danych.
[solved] Zliczanie ciągów liczb i systematyzowanie danych.
Chodzi o zliczanie ilości liczb występujących w ciągu oraz zamieszczanie wyniku w odpowiednich miejscach (systematyzowanie danych).
Szczegóły w załączniku.
Wiem, że na tym forum są prawdziwi specjaliści od tego typu zagadek
Z góry dziękuję za pomoc.
- Załączniki
-
- JedenGość_SystematyzowanieDanych.ods
- (22.9 KiB) Pobrany 253 razy
Re: Zliczanie ciągów liczb i systematyzowanie danych.
W pierwszym arkuszu zamieniłem wpisy w kolumnie D na wartości 0/1
Nadałem nazwy danym: "nazwy" przypisałem do wpisów w kolumnie A, "yn" do wpisów w kolumnie D.
W "Arkusz2" w kolumnie B utworzyłem, przy pomocy formuły macierzowej, ciągi tekstowe odpowiadające układowi zer i jedynek.
Od kolumny E do K znajdują się formuły obliczeniowe.
Odrębna formuła znajduje się w kolumnie E, wyznacza ona jaki długi jest ciąg znaków takich samych jak pierwszy znak.
W kolumnie F jest formuła, którą można kopiować do kolejnych kolumn. Wyodrębnia ona z całego ciągu pozostałą część, za ciągiem już przeanalizowanym i znajduje długość ciągu, którego każdy znak jest taki sam jak pierwszy znak tego skróconego ciągu.
Do tego obszaru zastosowałem formatowanie warunkowe, wykorzystując wbudowane już style "Bad" i "Good" do wyróżnienia wartości reprezentujących ciągi zer i jedynek.
- Załączniki
-
- JedenGość_SystematyzowanieDanych.ods
- (29.03 KiB) Pobrany 248 razy
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: Zliczanie ciągów liczb i systematyzowanie danych.
Wiedziałem, że na Ciebie mogę liczyćJedenGość pisze: Wiem, że na tym forum są prawdziwi specjaliści od tego typu zagadek
Przekładam wszystko to co stworzyłeś na czynniki pierwsze "po mojemu".
Pierwsze co to osobiście ni lubię stosować nazw, ponieważ bardziej do mnie przemawia jak widzę konkretne określenia odwołań, kolumn, wierszy etc.
Na szybko zmieniłem formułę w B1 Arkusza 2 na taką:
Kod: Zaznacz cały
=POŁĄCZ.TEKSTY("";1;JEŻELI($A1=Arkusz1.$A$2:$A$463 ;Arkusz1.$D$2:$D$463 ))
Edit. Sorry, już wiem. ctrl+shift+enter...
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Zaznacz obszar, w którym znajdują się formuły. Wybierz "Znajdź i zamień" (albo CTRL+H). W polu "Znajdź" wpisz nazwę obszaru, w polu "Zamień" potrzebny obszar, np "$Arkusz1.$A$2:$A$463", w opcjach upewnij się, że zmiany są tylko dla bieżącego zaznaczenia a w polu "Szukaj w" wybierz "Formuły".
W takim przypadku warto wyłączyć także opcję "Wyrażenia regularne", gdyż niektóre znaki i te wyszukiwane, i zamienniki, mogą mieć inne działanie.
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: Zliczanie ciągów liczb i systematyzowanie danych.
Przekonwertowałem Twoje rozwiązanie pod swoje potrzeby. Prawie wszystko gra.
Kiedyś pomogłeś mi rozwiązać problemy w tej części tego wątku.
https://forum.openoffice.org/pl/forum/v ... 935#p21296
Stworzyłeś rozwiązanie, które opiera się na ujemnych liczbach czerwonych. Gdybym chciał rozwiązanie z tego tematu łączyć z tamtym to jest problem, ponieważ tu liczby czerwone nie są ujemne.
Inną kwestią jest, że chciałbym wykonać dwa dodatkowe działania:
1) Sumę liczb np. w wierszu E1-K1. Tu jest ok. Wynik: 21
2) Sumę liczb zielonych. Prostą metodą F1+H1+J1. Wynik: #VALUE!
Jednak czasami liczba zielona będzie jako pierwsza w kolumnie E. Jaką formułę zastosować, aby sumowało same liczby zielone?
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Wynik #VALUE! pojawia się gdyż jednym ze składników dodawania jest tekst. Funkcja JEŻELI.BŁĄD wstawia "" do tych komórek, które nie mogą już być wyliczone.
W formułach nie można wykorzystać koloru czcionki lub koloru tła jako elementu pozwalającego warunkować obliczenia. Dlatego zmodyfikowałem rozwiązanie.
Usunąłem z niego wszystkie formatowania warunkowe. Zmodyfikowałem formuły następująco:
Formuły w kolumnie E: wynik formuły jest mnożony przez -1 wtedy gdy pierwszym znakiem ciągu jest 0, a przez 1, gdy jest nim jedynka. Dzięki temu wynik jest ujemny, gdy pierwszym ciągiem są zera albo dodatni, gdy tym ciągiem są jedynki.
W kolumnach F do K: Wszystkie formuły są teraz formułami macierzowymi. Musiałem tak zrobić bowiem aby uwzględnić wszystkie liczby jako dodatnie zastosowałem funkcję MODUŁ.LICZBY wewnątrz funkcji SUMA, natomiast wynik obliczenia mnożę przez 1 albo -1 w zależności od tego jaką liczbą jest liczba w poprzedzającej komórce. Z twojego algorytmu wynika bowiem, że zawsze liczby występują przemiennie.
W tej sytuacji długości ciągów zer są obliczone jako liczba ujemna a ciągów jedynek - jako dodatnia. Do formatowania tego obszaru wykorzystałem własne kody formatu liczbowego. Niestety w tych formatach można skorzystać tylko z kilku kolorów.
W końcu w kolumnach L i M funkcją SUMA.JEŻELI sumuję liczby ujemne o liczby dodatnie.
Wynik w załączenie.
- Załączniki
-
- JedenGość_SystematyzowanieDanychA.ods
- (29.81 KiB) Pobrany 226 razy
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: Zliczanie ciągów liczb i systematyzowanie danych.
Wszystko fajnie, ale jeżeli ten zielony może być tylko taki (razi po oczach), bo jak pisałeś jest ograniczona liczba kolorów, to muszę cofnąć się do poprzedniego rozwiązania. Nawet za cenę utraty możliwości kompatybilności tego rozwiązania z tym ze wspomnianego wcześniej innego wątku.
Wracając do poprzedniego rozwiązania spróbowałem funkcji SUMA:
Kod: Zaznacz cały
=SUMA(F1;H1;J1)
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Kod: Zaznacz cały
=JEŻELI(FRAGMENT.TEKSTU(B1;1;1)="1";SUMA(E1;G1;I1;K1);SUMA(F1;H1;J1;L1))
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Zaś jeśli są tylko dwa rodzaje, to cóż: występują na przemian.
Dlatego kolumny E, G, I, K przechowują ten sam rodzaj wyników („zielone”), a F, H, J, L – drugi („czerwone”).
Ale...
1. skoro tak, to po co używać SUMA(), skoro da się prościej sumować za pomocą + ?
2. kłopoty się zaczną, kiedy okaże się, że w wierszu było więci niż 8 serii. Czy funkcją, czy działaniem +, nie dosumujesz wtedy do końca.
3. ogólnie zadanie polega na zsumowaniu co drugiej wartości w wierszu, poczynając albo od kolumny 1 (czyli nieparzyste), albo 2 (czyli parzyste indeksy), zależnie od wartości z kolumny B.
Kod: Zaznacz cały
=SUMA((E1:L1)*(CZY.PARZYSTA(KOLUMNA(E1:L1))+B1))
Jeśli kolumn wynikowych będzie więcej, wystarczy rozszerzyć adres w formule, bez zmiany jej treści.
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Podsyłam poprawiony dokument. Utworzyłem w nim style o nazwie "czerwony" i "zielony". Możesz je modyfikować aby dobrać potrzebne barwy.
- Załączniki
-
- JedenGość_SystematyzowanieDanychA.ods
- (30.02 KiB) Pobrany 232 razy
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: Zliczanie ciągów liczb i systematyzowanie danych.
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: Zliczanie ciągów liczb i systematyzowanie danych.
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Gdy używasz funkcji SUMA ignorowane są komórki zawierające tekst.JedenGość pisze:Wracając do poprzedniego rozwiązania spróbowałem funkcji SUMA:
KOD: ZAZNACZ CAŁY ROZSZERZ WIDOK
=SUMA(F1;H1;J1)
i tu Calc nie wywala błędu.
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: Zliczanie ciągów liczb i systematyzowanie danych.
Pisałem wyżej, że z powodu kolorystyki wracam do pierwszej wersji i w niej poprzez formułę z SUMĄ i FRAGMENT.TEKSTU osiągnąłem poprawny wynik sumowania.Jermor pisze:Teraz to już nie wiem na jakiej wersji pracujesz.
Z Twojej wypowiedzi zrozumiałem, że kolorów w kodzie formatu nie mogę sobie zmieniać. Ale jeżeli mogę je ustawić w formatowaniu warunkowym to zmienia postać rzeczy.
Myślę, że teraz już będzie wszystko ok. Dzisiaj już kończę, ale jutro przyjrzę się ostatniej proponowanej przez Ciebie wersji.
Dziękuję.
Re: Zliczanie ciągów liczb i systematyzowanie danych.
[BLACK], [BLUE], [BROWN], [CYAN], [GREEN], [GREY], [MAGENTA], [RED], [WHITE], i [YELLOW]
Kolory w formatowaniu właściwości czcionki mogą być dowolne z całej palety barw.
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: Zliczanie ciągów liczb i systematyzowanie danych.
P.S. Nie spotkałem się wcześniej z funkcją REGEX. Pomoc LO opisuje ją tylko po angielsku, a mój poziom tego języka nie jest na tyle dobry, aby ten opis dobrze zrozumieć. Może masz na swoim blogu jakiś tekst na jej temat?
Re: Zliczanie ciągów liczb i systematyzowanie danych.
pojawiają się błędy.
Szczegóły w załączonym pliku.
Proszę o rozwiązanie lub pomoc w dojściu do rozwiązania tego problemu.
- Załączniki
-
- 6 JedenGość_SystematyzowanieDanychA.ods
- (42.31 KiB) Pobrany 212 razy
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Jeżeli faktycznie chodzi o policzenie ile razy w każdym wierszu Arkusz2.G2:Q23 występują liczby >1, =-1, =-2, to wystarczy funkcja LICZ.JEŻELI.
W komórce Arkusz3.B2 można wpisać
Kod: Zaznacz cały
=LICZ.JEŻELI(Arkusz2.$G2:$Q2;B$1)
Do czego w tym arkuszu jest kolumna Green, nie wiem.
W Arkusz2 wpisałeś formuły i wygenerowały one błąd #VALUE!. Stało sie to przez kolumnę D i formułę macierzową:
Kod: Zaznacz cały
=SUMA(MODUŁ.LICZBY(G2:Q2))
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: Zliczanie ciągów liczb i systematyzowanie danych.
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Funkcja REGEX wykonuje działanie na tekście źródłowym, który jest pierwszym argumentem tej funkcji. Funkcja odnajduje w tym tekście fragment dopasowany do wzorca podanego jako drugi argument.
Drugi argument funkcji jest traktowany jak wyrażenie regularne, dlatego, gdy wzorcem jest tekst podawany wprost, wszystkie znaki tego tekstu, które mogłyby zostać zinterpretowane jako znaki wyrażenia regularnego, należy poprzedzić znakiem odwrotnego ukośnika (\).
Znakami o specjalnym znaczeniu w wyrażeniach regularnych są: * ? + [ ] ( ) { } ^ $ | \ . (kropka też jest znakiem specjalnym). Wielkość liter ma znaczenie.
Gdy funkcja ma podane tylko dwa parametry, zwraca ten fragment tekstu źródłowego, który jest dopasowany do wzorca.
REGEX("Jana Pawła II 1234/6";"23") zwróci ciąg 23, gdyż takie dopasowanie zostało znalezione.
REGEX("Jana Pawła II 1234/6";"\d{2}"), zwróci ciąg 12, gdyż wzorzec określa konieczność znalezienia ciągu złożonego z dwóch dowolnych cyfr, a 12 jest pierwszym takim ciągiem.
Jeśli żaden fragment tekstu źródłowego nie pasuje do wzorca, zwracany jest wynik #N/D.
Trzeci argument funkcji to zamiennik dla dopasowanego fragmentu. Funkcja zwróci tekst źródłowy, zastępując dopasowany do wzorca fragment – zamiennikiem.
REGEX("Jana Pawła II 1234/6";"\d{2}";"xxxx") zwróci: Jana Pawła II xxxx34/6, zastępując dopasowany ciąg (12) zamiennikiem (xxxx). Jeżeli żaden fragment tekstu źródłowego nie zostanie dopasowany do wzorca, zwrócony zostanie oryginalny tekst źródłowy.
Czwarty argument funkcji może określać flagę albo powtórzenie. Flagą może być litera „g” (tylko mała) oznaczająca, że zamiennik ma zostać zastosowany do każdego dopasowanego fragmentu tekstu źródłowego.
REGEX("Jana Pawła II 1234/6";"\d{2}";"xxxx";"g") zwróci: Jana Pawła II xxxxxxxx/6. Najpierw zostanie zamieniony pierwszy dopasowany fragment (12), a następnie drugi (34).
Jeśli ostatnim argumentem jest liczba, to określa ona, który dopasowany do wzorca fragment ma zostać zwrócony albo zamieniony. Gdy liczbą jest zero, zawsze zwrócony zostanie ciąg źródłowy bez żadnych zmian.
REGEX("Jana Pawła II 1234/6";"\d{2}";;2) zwróci ciąg 34, gdyż jest to drugi ciąg, który jest dopasowany do wzorca. Jeśli taki ciąg nie zostanie dopasowany, zostanie zwrócony wynik #N/D.
REGEX("Jana Pawła II 1234/6";"\d{2}";"xxxx";2) zwróci Jana Pawła II 12xxxx/6, gdyż drugim dopasowanym ciągiem jest 34 i to ten ciąg zostanie zastąpiony zamiennikiem. Gdy wzorzec nie zostanie dopasowany, zwrócony będzie oryginalny tekst źródłowy.
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] Zliczanie ciągów liczb i systematyzowanie danyc
Edit.
Wydaje się, że część problemu rozwiązałem poprzez użycie formuły:
Kod: Zaznacz cały
=INDEKS(G16:R16;ILE.LICZB(G16:R16))
- Załączniki
-
- 7 JedenGość_SystematyzowanieDanychA.ods
- (38.11 KiB) Pobrany 205 razy
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Dane wynikowe zawierają albo liczbę (jeśli jest obliczona), albo pusty ciąg znakowy.
Wykorzystałem pomocnicze kolumny obliczeniowe. Poniżej formuły tych kolumn dla pierwszego wiersza zestawionych danych.
- Położenie ostatniej liczby w wierszu danych wyznacza formuła w kolumnie V:
Zastosowanie formuły JEŻELI.BŁĄD wynika z faktu, że jeśli wszystkie pozycje zawierać będą jakąś liczbę, to PODAJ.POZYCJĘ zwróci wynik #N/D. Dlatego w takiej sytuacji należy wstawić wynik liczbowy 11.
Kod: Zaznacz cały
=JEŻELI.BŁĄD((PODAJ.POZYCJĘ("";G2:Q2;0)-1);11)
- Wartość ostatniej pozycji w wierszu (kolumnaW):
w której V2 zawiera położenie ostatniej wartości liczbowej.
Kod: Zaznacz cały
=INDEKS(G2:Q2;1;V2)
- W zaproponowanym rozwiązaniu utworzyłem jeszcze jedną dodatkową kolumnę, zawierająca wynik w którym -1 oznacza, że ostatnia liczba w wierszu jest ujemna albo 0, gdy ostatnia liczba w wierszu jest liczba większa od 0 (kolumna X).
Kod: Zaznacz cały
=SPRAWDŹ.PRÓG(INDEKS(G2:Q2;1;V2);0)-1
- Na podstawie obliczonej ostatniej pozycji i liczby mówiącej o tym, czy jest to liczba ujemna, generuję zakres danych potrzebnych do wyliczenia średniej. Oto formuła (kolumna Y):
Teraz mogę policzyć średnią z tego obszaru uwzględniająca tylko liczby ujemne (kolumna Z):
Kod: Zaznacz cały
="r"&WIERSZ()&"C7:r"&WIERSZ()&"c"&7+V2-1+X2
Kod: Zaznacz cały
=ŚREDNIA.JEŻELI(ADR.POŚR(Y2;0);"<0";ADR.POŚR(Y2;0))
Poniżej danych z kolumn G:R utworzyłem ich odpowiednik, ale zawierający tylko wartości ujemne oraz nie zawierający ostatniej wartości w wierszu, jeśli ta wartość jest ujemna.
Pierwsza komórka tego zakresu zawiera formułę:
Kod: Zaznacz cały
=JEŻELI(I((KOLUMNA()-KOLUMNA($F$1)<$V2+$X2);G2<0);G2;"")
Obliczenie mediany i średniej jest teraz banalnie proste, gdyż te obliczenia ignorują komórki puste, a sam obszar zawiera tylko wartości niezbędne do wykonania obliczeń.
Jest oczywiście jeden problem, który należy rozwiązać np. korzystając z funkcji JEŻELI.BŁĄD. Problem dotyczy sytuacji, gdy w danych znajduje się tylko jedna wartość i jest to wartość ujemna. Zgodnie z założeniem ostatnia wartość ujemna ma nie być uwzględniana, więc nie jest przenoszona do pomocniczej tabeli i ten pusty wiersz generuje błąd.
Zmodyfikowany plik odsyłam.
- Załączniki
-
- 7A JedenGość_SystematyzowanieDanychA.ods
- (39.98 KiB) Pobrany 233 razy
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: Zliczanie ciągów liczb i systematyzowanie danych.
Kod: Zaznacz cały
=INDEKS(G2:R2; ILE.LICZB(G2:R2))
Odpowiedni zakres stworzę przy pomocy funkcji PRZESUNIĘCIE:
Na stronach Pomocy pisze:Zwraca wartość przesunięcia komórki o pewną liczbę wierszy i kolumn względem danego punktu odniesienia.
SkładniaKod: Zaznacz cały
PRZESUNIĘCIE(odwołanie; wiersze; kolumny; wysokość; szerokość)
- - Odwołanie - w tym przypadku ma być to punkt startowy,
- Wiersze; Kolumny; - o ile wierszy i kolumn ma być przesunięty punkt startowy: tutaj w obu przypadkach o 0
- Wysokość - parametr opcjonalny, zakres ma być jednowierszowy, więc go pominę,
- Szerokość - parametr opcjonalny, ile kolumn ma mieć zakres danych, tutaj obliczony on zostaje z formuły:NP: PRZESUNIĘCIE(G3; 0; 0; ; 6) jest równoznaczne z obszarem danych G3:L3Kod: Zaznacz cały
ILE.LICZB(G2:R2)-1 - 1 na końcu bo ma być wykluczona ostatnia liczba ujemna
Kod: Zaznacz cały
=JEŻELI.BŁĄD(SUMA.JEŻELI(PRZESUNIĘCIE(G2; 0; 0; ; ILE.LICZB(G2:R2)-1); "<0"); 0)
Kod: Zaznacz cały
=JEŻELI.BŁĄD(MEDIANA(JEŻELI(PRZESUNIĘCIE(G2;0;0; ;ILE.LICZB(G2:R2)-1)<0; PRZESUNIĘCIE(G2;0;0; ;ILE.LICZB(G2:R2)-1)));0)
Kod: Zaznacz cały
=MEDIANA(JEŻELI(Zakres<0; Zakres))
Funkcją JEŻELI wybieram tylko liczby ujemne, pomijam wartości dodatnie
Funkcja MEDINA daje gotowy wynik...
PS. W celu obliczenia średniej w funkcji macierzowej zamiast MEDIANA wpisz ŚREDNIA
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Przechodząc do rzeczy. Jermor, wszystko jak zawsze super. Zaimplementowałem to w swoich plikach i jest bardzo dobrze. Trochę tylko mi przeszkadza to, że aby wyliczyć średnią i medianę potrzebuję dodatkowe komórki w wierszach G32-AT53 (wiem, że mogę je ukryć), ale to nie jest jakiś wielki problem. Próbowałem tę tabelę skopiować do kolumn od BA dalej, ale pojawiały się błędy (chyba, że coś namieszałem...).
Rafkus, Twoje rozwiązanie wydaje się prostsze. Jest super, tylko, że już zaimplementowałem rozwiązanie Jermora...
Jednak przyglądając się mu zauważyłm, że
Kod: Zaznacz cały
=JEŻELI.BŁĄD(SUMA.JEŻELI(PRZESUNIĘCIE(G2; 0; 0; ; ILE.LICZB(G2:R2)-1); "<0"); 0)
Tutaj
Kod: Zaznacz cały
=JEŻELI.BŁĄD(MEDIANA(JEŻELI(PRZESUNIĘCIE(G2;0;0; ;ILE.LICZB(G2:R2)-1)<0; PRZESUNIĘCIE(G2;0;0; ;ILE.LICZB(G2:R2)-1)));0)
Kolejny raz się powtórzę, ale... DZIĘKUJĘ!
Edit.
Rafkus, wszystko w Twojej formule jest ok. Już wiem gdzie robiłem błąd.
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Jeszcze raz sprawdziłem kod i otrzymuję bezbłędne wyniki - spacje nie przeszkadzają.błąd 507, 508 - Błąd ustawienia nawiasów
Brakujący nawias - na przykład brak nawiasu otwierającego, choć podano nawias zamykający
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Re: Zliczanie ciągów liczb i systematyzowanie danych.
Kod: Zaznacz cały
=WYST.NAJCZĘŚCIEJ(PRZESUNIĘCIE($N2;0;0;;ILE.LICZB($N2:$BA2)-1);"<0")
Jak tu nie mogę sobie z nią poradzić to tak samo mam z funkcjami:
- CZĘSTOŚĆ (chcę określić częstość występowania liczb od -1 do -3 z pominięciem ostatniej liczby)
- zwykłe LICZ.WARUNKI (chcę policzyć wszystkie liczby <0 z pominięciem ostatniej liczby).
Możesz mi jeszcze raz wytłumaczyć dokładnie o co chodzi z tym PRZESUNIĘCIEM (czytam hepa Calca i Excela i nie mogę pojąć).
Re: Zliczanie ciągów liczb i systematyzowanie danych.
W rozwiązaniu @Rafkusa nie rozumiem tego:
Wydaje mi się bowiem, że obszar ma być skracany, tylko wówczas gdy ostatnia liczba jest ujemna, a ta formuła skraca każdy obszar.Kod: Zaznacz cały
ILE.LICZB(G2:R2)-1 - 1 na końcu bo ma być wykluczona ostatnia liczba ujemna
No i rzeczywiście lepszym rozwiązaniem jest MEDIANA w w formule macierzowej, nie potrzeba wówczas obszaru pomocniczego.
Dodałem tez kolumnę z funkcją WYST.NAJCZĘŚCIEJ. Wyjaśniam jednocześnie, że wynik #VALUE! oznacza, że żadna wartość nie wystąpiła przynajmniej dwukrotnie.
Takie poprawione rozwiązanie dołączam.
- Załączniki
-
- 7B JedenGość_SystematyzowanieDanychA.ods
- (37.3 KiB) Pobrany 201 razy
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: Zliczanie ciągów liczb i systematyzowanie danych.
PRZESUNIĘCIE pozwala odwołać się do komórki albo obszaru, który leży w innym miejscu, względem wybranek komórki.
Załóżmy, że komórką odniesienia będzie D4.
Funkcja PRZESUNIĘCIE ma 5 argumentów. Pierwszy mówi względem jakiej komórki będziemy się orientować. Drugi parametr mówi o ile wierszy chcemy się względem tej komórki przesunąć w dół (liczba dodatnia) albo w górę (liczba ujemna).
Trzeci parametr mówi o ile kolumn chcemy się względem tej komórki przesunąć w prawo (liczba dodatnia) albo w lewo (liczba ujemna).
Gdy zatem użyjemy funkcji w następujący sposób:
Kod: Zaznacz cały
=PRZESUNIĘCIE(D4;2;3)
to w rzeczywistości odwołamy się do komórki G6 dwa wiersze niżej i trzy kolumny w prawo. Gdy argument jest zerem, to przesunięcie w odpowiadającym kierunku nie następuje.
Wykorzystanie tylko tych trzech argumentów oznacza odwołanie się do pojedynczej komórki.
Argument czwarty i piąty określają szerokość i wysokość nowego obszaru, przesuniętego względem komórki odniesienia. Te argumenty są opcjonalne, lecz jeśli wystąpią to muszą to być wartości większe od 0.
Czwarty argument określa wysokość obszaru, czyli z ilu wierszy będzie się składał.
Piąty argument określa szerokość obszaru, czyli z ilu kolumn będzie się on składał.
Zatem zapis PRZESUNIĘCIE(D4;2;3;5;7) oznacza odwołanie się do obszaru G6:M10. 5 wierszy, od 6 do 10 i 7 kolumn, od G do M.
Ponieważ funkcja przy takich argumentach zwraca obszar, to może zostać użyta w innych funkcjach, które wymagają obszaru jako swojego argumentu.
W twoim problemie chcesz obliczyć średnią i medianę z obszaru,(wiersza od G:R) którego długość zależy od ilości liczb.
Wiesz tylko ile liczb jest w wierszu. Funkcje ŚREDNIA, SUMA czy MEDIANA pozwalają jako argument wskazać obszar, zawierający liczby do obliczeń. Dlatego jako obszar możesz podać PRZESUNIĘCIE(G2;0;0;1;ilość liczb)
Obszar wyznaczany będzie względem G2 z przesunięciami zerowymi, czyli będzie się zaczynał właśnie w G2. Będzie miał wysokość 1, czyli składał się z jednego wiersza i szerokość wynikającą z ilości liczb w tym obszarze.
Możesz dzięki temu napisać formułę: ŚREDNIA(PRZESUNIĘCIE(G2;0;0;1;ilość liczb)) a ona zwróci wyliczoną wartość.
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: Zliczanie ciągów liczb i systematyzowanie danych.
Jeżeli liczba ostatnia jest dodatnia to tak czy siak nie jest ona brana pod uwagę podczas obliczenia średniej z liczb ujemnych i ich mediany. Dlatego w tym przypadku można nie przejmować ostatnią liczbą (można skracać każdy obszar).Jermor pisze:Wydaje mi się bowiem, że obszar ma być skracany, tylko wówczas gdy ostatnia liczba jest ujemna, a ta formuła skraca każdy obszar.
Co do PRZESUNIĘCIA funkcja ta pozwala na pobranie jakiejś wartości z określonego pola przesuniętego o zadane wartości. Np:
Kod: Zaznacz cały
= PRZESUNIĘCIE(B2; 1; 1)
Kod: Zaznacz cały
= PRZESUNIĘCIE(D4; -2; -1; 3; 3)
Sorki nie potrafię już prościej wytłumaczyć
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP