Kopiowanie kilku okien z wiersza do drugiego arkusza

Użytkowanie arkusza kalkulacyjnego
Siersc991
Posty: 1
Rejestracja: wt lip 02, 2024 2:01 pm

Kopiowanie kilku okien z wiersza do drugiego arkusza

Post autor: Siersc991 »

Dzień dobry,
nie wiem czy uda mi się opisać dokładnie o co mi chodzi, ale spróbuję. Mam prośbę o pomoc w następującej sprawie:
Stworzyłam bazę danych Klientów z ich danymi oraz potrzebnymi dla mnie informacjami.
Potrzebuję stworzyć przycisk, który po zaznaczeniu jednej komórki (np. Nazwiska Klienta) przeniesie mi dane do następnego arkusza.
Na przykładowym pliku opiszę: jest arkusz 2024 z uzupełnioną listą Klientów: Jan Kowalski, Janina Kowalska. Po wystawieniu polisy/zlecenia chcę aby dana osoba została przeniesiona do drugiego arkusza 2025 - jej imię nazwisko, pesel, nr rejestracyjny pojazdu, początek okresu ubezpieczenia (rozpoczynający się na kolejny rok). Dan takie jak polisa, towarzystwo czy ryzka będę uzupełniała z palca, ale resztę chciałabym jednym Kliknięciem przenosić :)

Czy ktoś z Was będzie uprzejmy i mi podpowie jak to zrobić? jeśli coś niejasno napisałam to spróbuję jeszcze raz wyjaśnić ;)
Załączniki
Baza danych.ods
(16.56 KiB) Pobrany 22 razy
OpenOffice 4.1.
Awatar użytkownika
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Kopiowanie kilku okien z wiersza do drugiego arkusza

Post autor: Jermor »

Problem nie jest wcale taki prosty, chociaż wydawać by się mogło, że to tylko przekopiowanie danych.
Rozwiązanie powinno mieć charakter ogólny, ale do tego potrzebna byłaby wiedza szersza o tym co chcesz osiągnąć.
Doraźne rozwiązanie wymaga, jak sądzę, utworzenie stosownego makra, które po wskazaniu wybranego rekordu (wiersza) przekopiowałoby wymagane komórki we właściwe miejsce.

Dodatkowa uwaga. Zauważyłem, że zastosowałaś niewłaściwy algorytm (formułę) wyznaczający koniec okresu ubezpieczeniowego. Termin ten powinien być dniem poprzedzającym datę wynikającą z przesunięcia daty początkowej o określony period. Czyli np. jeśli ubezpieczenie obowiązuje od 5 maja, a periodem jest rok, to kończy się ono 4 maja następnego roku. Ty zastosowałaś formułę: Data początkowa+365. Poda ona prawidłową datę tylko wówczas gdy w okresie ubezpieczenia znajduje się data 29 lutego. W pozostałym zakresie lat wyznacza datę wypadającą na ten sam dzień miesiąca co data początkowa.
Właściwą formułą byłaby taka: EDATE(data_początkowa;12)-1+I(DZIEŃ(data_początkowa)=29;MIESIĄC(data_początkowa)=2)
EDATE() wyznacza datę przesuniętą o wymaganą liczbę miesięcy. Pomniejszona o 1 wyznacza dzień poprzedni. Formuła logiczna modyfikuje ten ostatni dzień, jeśli dniem zawarcia umowy był 29 luty.
AOO 4.1.15, LO 24.2.5 (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
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Kopiowanie kilku okien z wiersza do drugiego arkusza

Post autor: Jermor »

No dobrze. Abyś zobaczyła, jak to może funkcjonować, zmodyfikowałem twój plik i wygenerowałem makro, które wykonuje przeniesienia wybranego klienta z arkusza "Lipiec 2024" do "lipiec 2025".
Najpierw o zmianach w arkuszu. Dodałem nową kolumnę, która zawiera datę początkową następnego okresu. Jest ona wyznaczana na podstawie daty końcowej ubezpieczenia. Ta kolumna może być ukryta.
Zmieniłem formuły wyliczające datę końcową ubezpieczenia (obliczana według nowej formuły) oraz liczbę dni do końca w ten sposób, aby te dane wyświetlały się tylko wtedy, gdy zostanie wpisana data początkowa.
Po ostatnim wierszu, jaki przewidziałaś w swoim arkuszu, wykreślona jest brązowa linia. Do tego wiersza wpisane są formuły obliczeniowe w kolumnach H, I i J.
Kolumny B i C mają przypisany format tekstowy (aby można było wpisać PESEL lub REGON z początkowymi zerami).
Dla komórek kolumny E utworzyłem sprawdzanie poprawności danych. Aktywacja komórki w tej kolumnie spowoduje pojawienie się przycisku. Jego rozwinięcie pozwoli wybrać jeden z dostępnych wpisów. Możliwy jest także własny wpis.
Utworzyłem formatowanie warunkowe, które zaznacza całe wiersze w następujący sposób:
Jeżeli ubezpieczenie wygasło więcej niż 30 dni temu, wiersz jest podświetlony na czarno.
Jeżeli ubezpieczenie wygasło, wiersz jest podświetlony na czerwono.
Jeżeli ubezpieczenie jeszcze nie wygasło, ale pozostało mniej niż 30 dni do wygaśnięcia, wiersz jest podświetlony na zielono.
Pozostałe wiersze są białe.
Aby uruchomić makro, należy użyć skrótu klawiaturowego SHIFT+F12.
Jak działa makro. Należy ustawić się w dowolnej komórce wierszu tego klienta, który ma zostać przeniesiony.
Nacisnąć skrót klawiaturowy, który został przypisany do makra.
Zaznaczony klient zostanie przeniesiony do arkusza "Lipiec 2025" do pierwszego wolnego miejsca. W tym wierszu ustalona zostanie nowa data początkowa oraz usunięte zostaną wpisy w pozycjach Nr polisy, Ryzyko i Towarzystwo
Aby wykorzystać te możliwości, musisz zdefiniować opcje bezpieczeństwa w ustawieniach arkusza tak, aby makro mogło być uruchamiane.
Makro, które tu włączyłem, zostało w całości nagrane.
Arkusz "Lipiec 2025" nie musi mieć zdefiniowanych żadnych formuł, bowiem przeniesienie klienta przeniesie także formuły. Gdyby trzeba było dopisać nowego klienta, wystarczy przekopiować dowolnego istniejącego i następnie pozmieniać dane, na tego nowego kogoś.
Usunąłem umieszczony tu załącznik, a wyjaśnienie znajduje się w następnym poście.
AOO 4.1.15, LO 24.2.5 (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
Jermor
Posty: 2325
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Kopiowanie kilku okien z wiersza do drugiego arkusza

Post autor: Jermor »

Przepraszam.
Załączam jeszcze raz plik. Z powodu pośpiechu dołączyłem plik z jakąś pierwszą próbą makra. Teraz się zorientowałem, że makro nie zadziała poprawnie. To po pierwsze.
Po drugie, to problem przypisania skrótu klawiaturowego. Napisałem, że jest nim SHIFT+F12. I jest, ale w moim komputerze. Ten skrót, bądź dowolnie inny (jeśli ten się nie podoba) należy samodzielnie przypisać we własnym Calcu.
Jak przypisać skrót klawiaturowy? W przypadku tego makra należy:
Wywołać polecenie "Narzędzia -> Dostosuj...".
Po otwarciu okna dialogowego przejść do zakładki "Klawiatura".
W obszarze "Skróty klawiaturowe" zaznaczyć wybrany skrót.
W obszarze "Kategoria" przewinąć drzewo kategorii do pozycji "Makra OpenOffice" i rozwinąć ją.
Odnaleźć pozycję zgodną z nazwą pliku i rozwinąć ją.
Rozwinąć pozycję "Standard" a w niej pozycję "Module1" i ją zaznaczyć.
Po tym działaniu w obszarze "Funkcja" pojawi się zaznaczona nazwa makra "przenies_klienta".
Kliknąć jeszcze raz wybrany skrót w obszarze "Skróty klawiaturowe". Dopiero teraz aktywnym w oknie dialogowym stanie się przycisk "Modyfikuj" i należy z niego skorzystać.
Zamknąć okno dialogowe.
Od tego momentu użycie tego skrótu uruchomi makro.
Ten skrót jest zdefiniowany w Calcu, więc można go nacisnąć w dowolnym innym arkuszu, jednak wówczas zostanie wyświetlony komunikat o błędzie, bo makro do uruchomienia jest zapisane razem z plikiem i tylko w nim może zostać uruchomione.
W załączonym pliku arkusz "Lipiec 2025" ma tylko nagłówek. Pierwsze wykonanie makra umieści w tym arkuszu pierwszą kopię, itd.
Załączniki
Siersc991.ods
(24.87 KiB) Pobrany 65 razy
AOO 4.1.15, LO 24.2.5 (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.
ODPOWIEDZ