Pobieranie danych z jednej tabeli i wyświetlanie ich w drugi

Użytkowanie arkusza kalkulacyjnego

Pobieranie danych z jednej tabeli i wyświetlanie ich w drugi

Postprzez koneser69 » Wt sty 05, 2021 4:22 pm

W załączniku przesyłam plik. Zawiera on dwa arkusze. W arkuszu1 jest poniższa tabela z danymi:
______ A B C A D B B
Nazwa1 1 4 7 5 10 8 2
Nazwa2 2 5 8 6 11 9 3
Nazwa3 3 6 9 7 12 1 4

Jak zrobić aby jak wpiszę w arkuszu2 np Nazwa1 to z automatu pobiorą się posortowane wartości z kolumny o nazwie A oraz C oczywiście z wiersza Nazwa1?
Czyli dla Nazwa1 ma pobrać A i C a więc: 1, 5, 7
Załączniki
test1.ods
(9.02 KiB) Pobrane 6 razy
OpenOffice 4.1.2 Windows 7
koneser69
 
Posty: 24
Dołączył(a): Śr mar 16, 2016 8:14 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez Rafkus » Wt sty 05, 2021 6:59 pm

Troszkę skomplikowany temat, więc mogę mieć problemy z wyjaśnieniem...
Potrzebujesz mieć zwrócone wybrane wartości z niektórych kolumn. Uzyskałem to przy pomocy formuły macierzowej (zatwierdzona przez jednoczesne wciśnięcie klawiszy CTRL+SHIFT+ENTER):
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=MIN.K( JEŻELI( ($B$1:$H$1="A")+($B$1:$H$1="C");  INDEKS(Zakres;  PODAJ.POZYCJĘ(Nazwa;   $A$1:$A$4;   0));  "");   KOLUMNA(A1)) 

Jak to działa:
Funkcja PODAJ.POZYCJĘ zgodnie z nazwą podaje na której pozycji znajduje się poszukiwana nazwa. Nazwa to tak naprawdę komórka do której wpisujesz swój wybór.
Funkcja INDEKS ze wszystkich danych dostarczy tylko jeden wiersz danych z całego Zakresu (twój Zakres to $B$1:$H$4) wskazany przez funkcję PODAJ.POZYCJĘ
Funkcja JEŻELI wykluczy dane, które nie będą zgodne z warunkiem: ($B$1:$H$1="A")+($B$1:$H$1="C") czyli będą wybrane wartości z kolumn A i C w innych kolumnach wartość zostanie zastąpiona tekstem "" (tekst o długości 0 znaków)
Funkcja MIN.K zwraca najmniejszą n-wartość określaną przez KOLUMNA(A1).

W załączniku zastosowane rozwiązanie
Ostatnio edytowano Śr sty 06, 2021 4:57 pm przez Rafkus, łącznie edytowano 1 raz
Powód: Usunięcie pliku, poniżej zamieszczono nową wersję
OpenOffice 4.1.6. oraz LibreOffice 6.4 Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Avatar użytkownika
Rafkus
 
Posty: 212
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez koneser69 » Śr sty 06, 2021 3:05 pm

thx działa. Mam jeszcze pytanie dlaczego jak w Arkusz1 dodam nową kolumnę za pomocą "Wstaw kolumnę" tak, że obecna kolumna A przesunęła się na do kolumny B to formuła przestaje działać?

Czy można te dane pobrać z innego arkusza?
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Arkusz1.$C$1:Arkusz1.$I$1="A")+(Arkusz1.$C$1:Arkusz1.$I$1="C")

Chodzi mi o wartość A i C. W załączonym pliku dodałem Arkusz3 i tam chciałbym wpisywać wartości jakie mają zostać uwzględnione.


Czy jeżeli w nowo dodanej kolumnie A dodam kolejny parametr dla wartości NazwaX to czy można jakoś pobierać dane z automatu dla NazwaX parametr1 i NazwaX parametr2
Załączniki
test1_3.ods
(9.49 KiB) Pobrane 4 razy
OpenOffice 4.1.2 Windows 7
koneser69
 
Posty: 24
Dołączył(a): Śr mar 16, 2016 8:14 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez Rafkus » Śr sty 06, 2021 3:50 pm

dlaczego jak w Arkusz1 dodam nową kolumnę za pomocą "Wstaw kolumnę" tak, że obecna kolumna A przesunęła się na do kolumny B to formuła przestaje działać?

"Przestaje działać" bo zmieniają się dane formuły. W skrócie oryginalna formuła wygląda tak:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=MIN.K(  Dane;   KOLUMNA(A1))

Wstawiając nową kolumnę A Formuły tworzące Dane zmieniają się poprawnie - to nie one powodują błąd.
Problem tworzy polecenie KOLUMNA(A1) - zwraca którą wartość z danych ma zwrócić, w tej chwili wynikiem tef formuły jest 1 zatem cała formuła ma zwrócić pierwszą najmniejszą wartość z Danych.
Po dodaniu nowej kolumny A to polecenie ulega zmianie na KOLUMNA(B1) - i w tej chwili wynikiem tego polecenia jest 2, zatem cała formuła ma zwrócić drugą najmniejszą wartość z Danych.

Czy można te dane pobrać z innego arkusza?

Tak:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
($C$1:$I$1=$Arkusz3.$A$2)+($C$1:$I$1=$Arkusz3.$A$3)


----------------------------------------------------
Edytowane:
Po zastanowieniu proponuję zmienić warunek na:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
LICZ.JEŻELI(Arkusz3.$A$2:$A$5;   $C$1:$I$1)

myślę, że jest prostszy do wpisania...
OpenOffice 4.1.6. oraz LibreOffice 6.4 Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Avatar użytkownika
Rafkus
 
Posty: 212
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez Rafkus » Śr sty 06, 2021 4:55 pm

Czy jeżeli w nowo dodanej kolumnie A dodam kolejny parametr dla wartości NazwaX to czy można jakoś pobierać dane z automatu dla NazwaX parametr1 i NazwaX parametr2

proponuję dodać jeszcze jeszcze jedną kolumnę i połączyć w niej parametr & NazwaX i podobnie taką połączoną frazę wyszukiwać w funkcji PODAJ.POZYCJĘ:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=MIN.K(JEŻELI(LICZ.JEŻELI(Arkusz3.$A$2:$A$5;  $D$2:$J$2);   INDEKS($D$3:$J$9;   PODAJ.POZYCJĘ($D$14 & $C$14;  $B$3:$B$9;  0));   "");   D$1)


W załączniku prezentowane rozwiązanie.
Załączniki
test1_4.ods
(12.5 KiB) Pobrane 5 razy
OpenOffice 4.1.6. oraz LibreOffice 6.4 Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Avatar użytkownika
Rafkus
 
Posty: 212
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez koneser69 » Cz sty 07, 2021 10:29 am

thx za odpowiedzi. W załączniku przesyłam plik. Dodałem do niego możliwość exportu wybranego zakresu wydruku do pdf. W tym celu należy pozwolić na wykonanie makra i uruchomić makro export_to_pdf.

Przygotowałem również w kolumnie B12 pole w którym chciałbym wpisywać kolejne wartości 1,2,3 itd. I tak dla jedynki pobiera mi Nazwa1 po czym dane się zmieniają następnie exportuje je do pdf, no i tak muszę powtórzyć tą czynność dla każdej pozycji.

Czy można ten mechanizm jakoś zautomatyzować? Tak aby z automatu wpisywały się kolejne wartości po czym wykonywał export do pdfa?
Załączniki
test1_5.ods
(12.9 KiB) Pobrane 7 razy
OpenOffice 4.1.2 Windows 7
koneser69
 
Posty: 24
Dołączył(a): Śr mar 16, 2016 8:14 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez Rafkus » Cz sty 07, 2021 4:03 pm

Dziś tak na szybko, aby zautomatyzować to musiałbyś do swojego makra dodać pętlę, np taką:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Sub pentla
  Dim oSheets As Variant
  Dim oObj1 As Variant
  Dim pierwszy, ostatni, i As integer

  oSheets = ThisComponent.getSheets()
  oObj1 = oSheets.getByName("Arkusz1")
 
  pierwszy = oObj1.getCellRangeByName("B12").Value   'od którego wiersza oraz nr aktualnego wiersza
  ostatni = oObj1.getCellRangeByName("C12").Value   'do którego wiersza

  for i = pierwszy to ostatni
     oObj1.getCellRangeByName("B12").Value = i      'zmień numer wyświetlanego rekordu
     
     export_pdf      'tutaj twoje makro drukujące
     
  next i   
End Sub

W swoim makrze musisz dopracować nazywanie dokumentów PDF, bo w tej chwili będzie tworzył/nadpisywał tylko jeden ten sam plik.
Czy ty chcesz tak drukować po jednym rekordzie czy też aby utworzyła się najpierw cała tabela przetworzonych danych?
OpenOffice 4.1.6. oraz LibreOffice 6.4 Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Avatar użytkownika
Rafkus
 
Posty: 212
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d

Postprzez koneser69 » Pn sty 11, 2021 8:05 am

Makro miało ty tak działać, że będzie zmieniało numer w komórce B12 na kolejny powiedzmy od 1 do 20. Po zmianie numeru dane widoczne w obszarze wydruku muszą się zmienić ponieważ to obszar wydruku jest eksportowany do pdf.
OpenOffice 4.1.2 Windows 7
koneser69
 
Posty: 24
Dołączył(a): Śr mar 16, 2016 8:14 pm


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 1 gość