OO Calc - funkcje

Nie wiesz, gdzie umieścić swój post? Pisz tutaj!
PrzemoBoss
Posty: 4
Rejestracja: pn sie 19, 2013 10:34 am

OO Calc - funkcje

Post autor: PrzemoBoss »

Witam Was bardzo serdecznie,


jestem laikiem w tej dziedzinie, w związku z czym proszę Was o pomoc.

W arkuszu OO Calc zrobiłem tabelkę z wierszami A,B oraz kolumnami 1,2,3. Dla A/1 wartość 5, A/2 wartość 3, A/3 wartość 2. Dla B tak samo jak dla A, czyli B/1 wartość 5, B/2 wartość 3, B/3 wartość 2

W drugim arkuszu stworzyłem menu rozwijane z liczbami A,B i obok menu rozwijane z cyframi 1,2,3. Trzecia kolumna stanowi zmienną wartość np. 100 a czwarta kolumna wynik końcowy.

W jaki sposób i czy jest w ogóle to możliwe by:

- z menu rozwijanego wybrać B oraz 2 (razem dadzą wartość "3" zgodnie z pierwszym arkuszem) i po wpisaniu wartości np. 100, wyjdzie wynik 300

Jest to coś w stylu, jeśli literę B i cyfrę 2 pomnożymy razy 100 to da nam wynik końcowy. W tym przypadku 3x100 = 300

Męczę się z tym kilka godzin i niestety nie potrafię tego rozbić. Może dlatego, że nie mam matematycznego umysłu.

Bardzo dziękuję za odpowiedzi,

przyjemności życzę,
Przemek.
OpenOffice 3.1 na Windows 7
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: OO Calc - funkcje

Post autor: Minio »

Potrzebujesz funkcji PRZESUNIĘCIE i PODAJ.POZYCJĘ.

Pierwsza z nich zwraca wartość komórki oddalonej o X wierszy i Y kolumn od określonej komórki.
Z kolei druga podaje relatywne umiejscowienie danej wartości w zakresie. Tak więc jeżeli wartość „ogórek” znajduje się w komórce C4, a Ty każesz funkcji PODAJ.POZYCJĘ szukać ogórka w zakresie C4:C10, to zwróci ona wartość 1 (ponieważ ogórek jest pierwszą pozycją w przeszukiwanym zakresie).

Formuła ogólna przyjmuje więc postać:

Kod: Zaznacz cały

=PRZESUNIĘCIE(Arkusz1.$A$1;PODAJ.POZYCJĘ(B1;Arkusz1.A2:A4;0);PODAJ.POZYCJĘ(A1;Arkusz1.B1:C1;0))
(przy założeniu, że Twoja tabela rzeczywiście ma etykiety, a więc kolumna zatytułowana „A” naprawdę znajduje się w kolumnie B; ponieważ kolumna A arkusza jest zarezerwowana na etykiety wierszy)

W Twoim konkretnym przypadku możemy zrezygnować z dynamicznego tworzenia drugiego argumentu funkcji PRZESUNIĘCIE. Ponieważ pierwszy wiersz ma numer 1, drugi nr 2 etc., formuła:

Kod: Zaznacz cały

PODAJ.POZYCJĘ(B1;Arkusz1.A2:A4;0)
tak naprawdę zwróci wartość B1. Możemy więc ją od razu podać naszej funkcji:

Kod: Zaznacz cały

=PRZESUNIĘCIE(Arkusz1.$A$1;B1;PODAJ.POZYCJĘ(A1;Arkusz1.B1:C1;0))
Ostatnim krokiem jest przemnożenie zwróconego wyniku przez wartość komórki, w której wpisujesz swoją liczbę (100).

Zobacz też załączony arkusz.
Załączniki
przesuniecie.ods
arkusz z przykładami
(12.42 KiB) Pobrany 337 razy
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
PrzemoBoss
Posty: 4
Rejestracja: pn sie 19, 2013 10:34 am

Re: OO Calc - funkcje

Post autor: PrzemoBoss »

Witam,


dziękuję bardzo za poradę. Spróbowałem zrobić tak jak Pan mi napisał. Chyba popełniłem błąd, ponieważ wynik 0 mam ;/

Proszę o wskazówkę jak mam to zrobić.

Dziękuję bardzo
Pozdrawiam,
Przemek
Załączniki
Co teraz.ods
(8.15 KiB) Pobrany 233 razy
OpenOffice 3.1 na Windows 7
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: OO Calc - funkcje

Post autor: Minio »

Komórka, względem której odczytujesz wartość w funkcji PRZESUNIĘCIE, się — nomen omen — przesunęła.
Twoja formuła wygląda tak:

Kod: Zaznacz cały

=PRZESUNIĘCIE(Dane.$B$10;PODAJ.POZYCJĘ(D5;Dane.C4:E4;0);PODAJ.POZYCJĘ(B5;Dane.B5:B6;0))
Co arkusz interpretuje jako:

Kod: Zaznacz cały

=PRZESUNIĘCIE(Dane.$B$10;1;2)
Czyli arkusz odczytuje wartość z komórki oddalonej o 1 wiersz w dół i 2 kolumny w prawo; lub, innymi słowy, wartość komórki D11. Rzecz w tym, że ta komórka jest pusta.

Po prostu zmień pierwszy argument funkcji na Dane.$B$4 (gdyż tam znajduje się lewy górny róg Twojej tabeli). Będzie działać.

Poza tym pomieszałeś kolejność argumentów. Najpierw podajesz przesunięcie o wiersze, a potem o kolumny. Zwyczajnie zamień miejscami funkcje PODAJ.POZYCJĘ.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
PrzemoBoss
Posty: 4
Rejestracja: pn sie 19, 2013 10:34 am

Re: OO Calc - funkcje

Post autor: PrzemoBoss »

Dziękuję działa :-)


Teraz chciałbym zrobić sumę wyników. Robię sobie tabelkę, w której naprzemiennie wpisuję dane Łukasza i Michała, ale chciałbym aby w jednym okienku wyskoczyła mi suma wszystkich kwot dotyczących Łukasza. Czy jest to możliwe?

Łukasz - Gruszka - 100
Łukasz- Śliwka - 200
Łukasz- Jabłko - 100

W osobnym okienku czyta, że z menu rozwijanego Łukasz to jest w sumie 400.

Dziękuję za kolejną wskazówkę,
przyjemności w dniu dzisiejszym.
Przemek
OpenOffice 3.1 na Windows 7
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: OO Calc - funkcje

Post autor: Minio »

Przy takiej strukturze jak miałeś dotychczas:

Kod: Zaznacz cały

	jabłko	gruszka	śliwki
Łukasz	12	5	4
Michał	6	8	6
Łukasz	4	3	7
będzie ciężko. Tu już są potrzebne formuły macierzowe, a to dość zaawansowana część pakietu.

Natomiast na strukturze takiej jak przedstawiłeś w powyższym poście:

Kod: Zaznacz cały

kto	co	ile
Michał	jabłka	4
Łukasz	gruszki	5
Michał	gruszki	7
Michał	śliwki	1
Łukasz	jabłka	8
Potrzebna Ci będzie funkcja SUMA.JEŻELI.

Możesz też agregować wyniki przy pomocy sum częściowych (artykuł jutro na moim blogu — patrz podpis) albo tabeli przestawnej. Oszczędność czasu jest zauważalna zwłaszcza przy porównywaniu danych (np. ile sztuk każdego z owoców ma każdy z chłopców?). Można to samo zrobić formułami, ale będzie męczące i pracochłonne.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
PrzemoBoss
Posty: 4
Rejestracja: pn sie 19, 2013 10:34 am

Re: OO Calc - funkcje

Post autor: PrzemoBoss »

Ok,

czekam z niecierpliwością na artykuł. Jeszcze raz dziękuję.

Pozdrawiam,
Przemek
OpenOffice 3.1 na Windows 7
ODPOWIEDZ