Automatyczne tworzenie podtabeli na podstawie jednej głównej

Użytkowanie arkusza kalkulacyjnego
piotrsz78
Posty: 1
Rejestracja: śr sty 26, 2011 11:26 am

Automatyczne tworzenie podtabeli na podstawie jednej głównej

Post autor: piotrsz78 »

Pytanie dotyczy takiego oto problemu:
Mam w tabeli miejsce na 22 przedmioty (kolumny) i 42 uczniów (wiersze). Wpisując dane podaję tylko 10 przedmiotów i 20 uczniów. Pierwsza tabela nie może być zmieniona. Potrzebuję na jej podstawie utworzyć podtabelę dla każdego ucznia osobno z nazwą przedmiotu i jego ocenami, ale nie chcę, aby generował tabele dla nieistniejących uczniów i u istniejącego ucznia nie podawał pustych kolumn przedmiotów.
OpenOffice 3.2 na Ubuntu 10.10
Raknor
Posty: 509
Rejestracja: pt lut 19, 2010 3:32 pm
Lokalizacja: Warszawa
Kontakt:

Re: Automatyczne tworzenie podtabeli na podstawie jednej głó

Post autor: Raknor »

Nie mam pewności; czy dokładnie o to chodziło:

Sprawdzenie, czy są wypełnione pola z nazwiskiem:

Kod: Zaznacz cały

=JEŻELI(CZY.TEKST(B5);1;"")
Policzenie jedynek, na podstawie której zostanie utworzona nowa tabela (uczniowie):

Kod: Zaznacz cały

=JEŻELI(CZY.LICZBA(H5);1&"_"&LICZ.JEŻELI($H$5:$H5;1);"")
Sprawdzenie, czy są wypełnione pola z przedmiotami oraz czy uczniowie mają wystawiony stopień:

Kod: Zaznacz cały

=JEŻELI(CZY.BRAK(PODAJ.POZYCJĘ(1&"_"&C14; $C$12:$F$12;0));"";INDEKS($C$4:$F$4;PODAJ.POZYCJĘ(1&"_"&C14; $C$12:$F$12;0)))
Policzenie jedynek, na podstawie której zostanie utworzona nowa tabela (przedmioty):

Kod: Zaznacz cały

=JEŻELI(CZY.LICZBA(C11);1&"_"&LICZ.JEŻELI($C$11:C$11;1);"")
Tworzenie wierszy nowej tabeli (uczniowie):

Kod: Zaznacz cały

=JEŻELI(CZY.BRAK(PODAJ.POZYCJĘ(1&"_"&A16; $I$5:$I$9;0));"";INDEKS($B$5:$B$9;PODAJ.POZYCJĘ(1&"_"&A16; $I$5:$I$9;0)))
Tworzenie kolumn nowej tabeli (przedmioty):

Kod: Zaznacz cały

=JEŻELI(CZY.BRAK(PODAJ.POZYCJĘ(1&"_"&C14; $C$12:$F$12;0));"";INDEKS($C$4:$F$4;PODAJ.POZYCJĘ(1&"_"&C14; $C$12:$F$12;0)))
Wypełnienie nowej tabeli stopniami:

Kod: Zaznacz cały

=JEŻELI(CZY.BRAK(JEŻELI(INDEKS($C$5:$F$9;PODAJ.POZYCJĘ($B16;$B$5:$B$9;0);PODAJ.POZYCJĘ(C$15;$C$4:$F$4;0))=0;"";INDEKS($C$5:$F$9;PODAJ.POZYCJĘ($B16;$B$5:$B$9;0);PODAJ.POZYCJĘ(C$15;$C$4:$F$4;0))));"";JEŻELI(INDEKS($C$5:$F$9;PODAJ.POZYCJĘ($B16;$B$5:$B$9;0);PODAJ.POZYCJĘ(C$15;$C$4:$F$4;0))=0;"";INDEKS($C$5:$F$9;PODAJ.POZYCJĘ($B16;$B$5:$B$9;0);PODAJ.POZYCJĘ(C$15;$C$4:$F$4;0))))
Inne, ciekawe szablony:
http://templates.services.openoffice.or ... w_1-11.ots
http://templates.services.openoffice.or ... ikacja.ots

Zmiany jakie zaszły w demo2 względem wersji demo:
Utworzenie listy rozwijanej z nazwiskami uczniów.

Sprawdzenie czy jest wystawiony stopień dla danego ucznia:

Kod: Zaznacz cały

=JEŻELI(INDEKS(C$5:C$9;PODAJ.POZYCJĘ($I$20;$B$5:$B$9;0))>0;1;"")
Policzenie jedynek, na podstawie której zostanie utworzona nowa tabela:

Kod: Zaznacz cały

=JEŻELI(CZY.LICZBA(C$14);1&"_"&LICZ.JEŻELI($C$14:C$14;1);"")
Wypisanie w nowej tabeli przedmiotów z jakich uczeń uzyskał stopień:

Kod: Zaznacz cały

=JEŻELI(CZY.BRAK(PODAJ.POZYCJĘ(1&"_"&G21; $C$15:$F$15;0));"";INDEKS($C$4:$F$4;PODAJ.POZYCJĘ(1&"_"&G21; $C$15:$F$15;0)))
Wypisanie w nowej tabeli stopnia jaki uczeń uzyskał z danego przedmiotu:

Kod: Zaznacz cały

=JEŻELI(CZY.BRAK(INDEKS($C$5:$F$9;PODAJ.POZYCJĘ($I$20;$B$5:$B$9;0);PODAJ.POZYCJĘ($H21;$C$4:$F$4;0)));"";INDEKS($C$5:$F$9;PODAJ.POZYCJĘ($I$20;$B$5:$B$9;0);PODAJ.POZYCJĘ($H21;$C$4:$F$4;0)))
Załączniki
lista_ocen2.ods
demo2
(9.81 KiB) Pobrany 250 razy
lista_ocen.ods
demo
(9.41 KiB) Pobrany 148 razy
LibreOffice 5.1.6 (64bit)
Kubuntu 16.04 (64bit)
Wszelkie uwagi lub chęć udziału przy polonizacji LibreOffice proszę kierować na adres: pol_lo at pro.wp.pl
ODPOWIEDZ