Pobieranie danych z jednej tabeli i wyświetlanie ich w drugi
Pobieranie danych z jednej tabeli i wyświetlanie ich w drugi
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
______ 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) Pobrany 186 razy
OpenOffice 4.1.2 Windows 7
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
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):
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
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
=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))
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 zmieniony śr sty 06, 2021 4:57 pm przez Rafkus, łącznie zmieniany 1 raz.
Powód: Usunięcie pliku, poniżej zamieszczono nową wersję
Powód: Usunięcie pliku, poniżej zamieszczono nową wersję
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
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?
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
Czy można te dane pobrać z innego arkusza?
Kod: Zaznacz cały
Arkusz1.$C$1:Arkusz1.$I$1="A")+(Arkusz1.$C$1:Arkusz1.$I$1="C")
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) Pobrany 156 razy
OpenOffice 4.1.2 Windows 7
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
"Przestaje działać" bo zmieniają się dane formuły. W skrócie oryginalna formuła wygląda tak: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ć?
Kod: Zaznacz cały
=MIN.K( Dane; KOLUMNA(A1))
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.
Tak:Czy można te dane pobrać z innego arkusza?
Kod: Zaznacz cały
($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
LICZ.JEŻELI(Arkusz3.$A$2:$A$5; $C$1:$I$1)
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
proponuję dodać jeszcze jeszcze jedną kolumnę i połączyć w niej parametr & NazwaX i podobnie taką połączoną frazę wyszukiwać w funkcji PODAJ.POZYCJĘ: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
Kod: Zaznacz cały
=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)
- Załączniki
-
- test1_4.ods
- (12.5 KiB) Pobrany 151 razy
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
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?
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) Pobrany 166 razy
OpenOffice 4.1.2 Windows 7
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
Dziś tak na szybko, aby zautomatyzować to musiałbyś do swojego makra dodać pętlę, np taką:
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?
Kod: Zaznacz cały
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
Czy ty chcesz tak drukować po jednym rekordzie czy też aby utworzyła się najpierw cała tabela przetworzonych danych?
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Pobieranie danych z jednej tabeli i wyświetlanie ich w d
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