Filtrowanie i przeniesienie danych pomiędzy arkuszami

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
ortes
Posty: 1
Rejestracja: wt lip 23, 2019 1:48 pm

Filtrowanie i przeniesienie danych pomiędzy arkuszami

Post autor: ortes »

Witam. Na kodowaniu w LO znam się nie wiele dopiero zaczynam swoją poważną przygodę z LO Calc z powodu pozbawienia w pracy dostępu do MS Excela

Mam w arkuszu dane w formie tabelarycznej (max 1500 wierszy)

Id pracownika odpowiedzialnego|nr umowy|wartość umowy|okres obowiązywania umowy|data podpisania umowy|data zakończenia umowy

każdy id pracownika może ale nie musi występować kilkukrotnie, na pewno jest jedno wystąpienie.

W jaki sposób napisać makro które stworzy automatycznie arkusze dla wszystkich występujących w Arkusz1 identyfikatorów pracownika i przenieść lub skopiować do tych arkuszy dane o umowach osób z identyfikatorem którego nazwa to identyfikator pracownika?

Miałem to zrobione w Excelu ale w LibreOffice się wysypuje :)
LibreOffice 6.2 | Windows 10 64b PL
Jan_J
Posty: 4583
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Filtrowanie i przeniesienie danych pomiędzy arkuszami

Post autor: Jan_J »

W pseudokodzie

nbw = 1 (numer bieżącego wiersza; tzn. wiersz drugi w kolejności; w pierwszym jest nagłówek)
pobierz id z kolumny nr 0 z wiersza nbw
dopóki id jest niepusty (tzn pętla while)
jeżeli nie istnieje arkusz o nazwie id, to go utwórz
nww = numer pierwszego wolnego wiersza w akuszu o nazwie id
wpisz do nww-tego wiersza akusza id po kolei wszystkie dane z kolumn wiersza nbw z pierwszego arkusza
zwiększ nbw o 1
pobierz id z kolumny nr 0 z bieżącego wiersza pierwszego arkusza
end while
zapisz skoroszyt

Szczegóły: AndrewMacro i OpenOffice Macros Explained A. Pitonyaka

Zastrzeżenie: po czym odróżnić, czy dana tabela została już przetworzona? może kopiować do osobnego skoroszytu, zakładanego od zera?

Zadanie nie jest szczególnie trudne. Daj krótki neutralny (tj. bez danych poufnych) przykład, spróbujemy coś uszczegółowić, gdyby w.w. pseudokod był jednak zbyt ogólny.
JJ
LO (24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ