[SOLVED] pobieranie danych z komórek plików zewnętrznych

Użytkowanie arkusza kalkulacyjnego
AlbertK
Posty: 15
Rejestracja: pt lip 22, 2016 11:29 pm

[SOLVED] pobieranie danych z komórek plików zewnętrznych

Post autor: AlbertK »

Jako że to mój pierwszy post, na wstępie chciałbym gorąco powitać wszystkich użytkowników Forum.

Chcę stworzyć arkusz (nazwijmy go arkuszem zbiorczym), który będzie pobierał i wyświetlał dane zawarte w innych arkuszach (będzie to seria danych, powiedzmy że w jednej kolumnie). Dane te zamieszczone są w kilkudziesięciu innych arkuszach calc, znajdujących się w różnych miejscach na dysku. Każdy z tych plików ma dokładnie taki sam układ (i nazwy) arkuszy i komórek. Pliki te różnią się tylko nazwami, położeniem na dysku oraz zawartością samych komórek. Chciałbym aby użytkownik arkusza zbiorczego mógł, wpisując w odpowiednim polu nazwę katalogu oraz nazwę pliku (czy np. wybierając je z listy) sprawić, aby w określonej kolumnie arkusza zbiorczego pojawiły się dane zawarte w komórkach tego właśnie pliku.

Czyli np. - wybieramy w danym polu arkusza zbiorczego nazwę katalogu: SPRZEDAŻ, oraz numer pliku: G04 - a arkusz zbiorczy w tym momencie ładuje nam dane z pliku "Zestawienie.G04.ods", znajdującego pod adresem C:/DANE/SPRZEDAŻ.

Najprościej byłoby to pewnie zrobić przez odwołanie, które zamiast operować formułą np.: ='file:///C:/DANE/SPRZEDAŻ/Zestawienie.G04.ods'#Dane.A11 (która jest sztywna i zawsze odwołuje do tego samego pliku) będzie operowało adresem, w którym pojawią się zmienne. Coś w stylu ='file:///C:/DANE/[ZMIENNA-1]/Zestawienie.[ZMIENNA-2].ods'#Dane.H11 Nie wiem tylko czy coś takiego jest w Calc możliwe. Intuicja podpowiada, że rozwiązanie jest bardzo proste, ale jak na razie nie znalazłem funkcji, która za to odpowiada :)

Dzięki za pomoc.
Ostatnio zmieniony pn lip 25, 2016 10:08 pm przez AlbertK, łącznie zmieniany 1 raz.
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Husar
Posty: 203
Rejestracja: śr mar 06, 2013 3:48 am

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: Husar »

AlbertK pisze: Najprościej byłoby to pewnie zrobić przez odwołanie, które zamiast operować formułą np.: ='file:///C:/DANE/SPRZEDAŻ/Zestawienie.G04.ods'#Dane.A11 (która jest sztywna i zawsze odwołuje do tego samego pliku) będzie operowało adresem, w którym pojawią się zmienne. Coś w stylu ='file:///C:/DANE/[ZMIENNA-1]/Zestawienie.[ZMIENNA-2].ods'#Dane.H11 Nie wiem tylko czy coś takiego jest w Calc możliwe. Intuicja podpowiada, że rozwiązanie jest bardzo proste, ale jak na razie nie znalazłem funkcji, która za to odpowiada :)
Owszem można próbować poprzez odwołania, ale jest małe ale. Skoroszyty źródłowe podczas pobierania danych muszą być otwarte. Przy kilku skoroszytach to nie problem.
Inne rozwiązanie to makro, które by wykonywało takie kroki w pętli:
- pobranie adresu skoroszytu ze arkusza zbiorczego,
- otwarcie skoroszytu źródłowego,
- zaciągnięcie danych,
- wklejenie danych do arkusza zbiorczego,
- zamknięcie skoroszytu źródłowego,
- przejście do początku pętli lub zakończenie pętli po osiągnięciu ostatniego wiersza z adresami
Pozdrawiam
Roman

Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
AlbertK
Posty: 15
Rejestracja: pt lip 22, 2016 11:29 pm

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: AlbertK »

Z tym akurat nie mam problemu. W przypadku odwołania (bezpośredniego) do pliku zewnętrznego, arkusz po otwarciu informuje, że w pliku znajdują się łącza do innych plików i pyta czy wykonać aktualizację. Po kliknięciu na "tak" pobiera dane z arkusza źródłowego, niezależnie od tego czy arkusz ten jest otwarty czy zamknięty.

Rzecz w tym, że proste odwołanie nie załatwia problemu, bo zawsze odwołuje się do tego samego arkusza, a nie wiem czy da się skonstruować odwołanie oparte na zmiennych.

Pozdrawiam
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Husar
Posty: 203
Rejestracja: śr mar 06, 2013 3:48 am

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: Husar »

Skoro tak, to jeśli ZMIENNA-1 jest w A1 a ZMIENNA-2 jest w B1 to

Kod: Zaznacz cały

='file:///C:/DANE/"&A1&"/Zestawienie."&B1&".ods'#Dane.H11
Pozdrawiam
Roman

Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
AlbertK
Posty: 15
Rejestracja: pt lip 22, 2016 11:29 pm

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: AlbertK »

Dokładnie o coś takiego mi chodzi :)

Rzecz w tym, że z nieznanych mi przyczyn rozwiązanie nie działa. Po zastąpieniu części adresu zmienną opisaną jako ""&A1&" i wpisaniu do komórki A1 nazwy właściwego katalogu, dostaję jako wynik #REF!, a przy otwieraniu pliku komunikat:

|Następującego pliku zewnętrznego nie można było wczytać. Dane powiązane z tego pliku nie są aktualizowane.
file:///C:/Users/asus/"&A1&"/probne zrodlo.ods"

Prawdopodbnie nie ma błędu w formacie danych komórki A1 (jest tekstowa). Kiedy adres z w/w zmienną wezmę w cudzysłów ("file:///C:/Users/asus/"&A1&"/probne zrodlo.ods"), w komórce pojawia się tekst odpowiadający dokładnie - litera w literę - adresowi zewnętrznego pliku (z już uzupełnionymi danymi o nazwę katalogu znajdującego się w zmiennej).
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: Jan_J »

Czytałem wątek i coś mnie tknęło, że to nie powinno działać. Ale tknęło zbyt słabo, żeby sprawdzić albo spytać.

Problem w tym, że operacja & odnosi się do tekstu, do danych typu tekstowego. Zaś adres zawarty między ' a ' tekstem nie jest.

Do zamiany tekstu na adres służy funkcja INDIRECT, czyli ADR.POŚR. Coś jak tu: https://forum.openoffice.org/pl/forum/v ... 64&p=14974
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
AlbertK
Posty: 15
Rejestracja: pt lip 22, 2016 11:29 pm

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: AlbertK »

Funkcja ADR.POŚR rozwiązała problem. Mam tylko nadzieję, że przy pobieraniu danych z 80 plików arkusze się nie wysypią :)

Wielkie dzięki za pomoc !
LibreOffice, Wersja: 5.1.3.2 (x64), Windows 10 Home
Husar
Posty: 203
Rejestracja: śr mar 06, 2013 3:48 am

Re: [SOLVED] pobieranie danych z komórek plików zewnętrznych

Post autor: Husar »

Mój błąd. Sorry.
Pozdrawiam
Roman

Daj znać [SOLVED], kiedy Twój problem zostanie rozwiązany
LO 7.2.x/AOO 4.1.x. używane na Ubuntu 20.04LTS i M$ Windows 10
Daniel_I
Posty: 1
Rejestracja: pt sty 13, 2017 8:15 pm

Re: pobieranie danych z komórek różnych plików zewnętrznych

Post autor: Daniel_I »

AlbertK pisze:Funkcja ADR.POŚR rozwiązała problem. Mam tylko nadzieję, że przy pobieraniu danych z 80 plików arkusze się nie wysypią :)

Wielkie dzięki za pomoc !
AlbertK
Ogromna prośba. Czy mógłbyś wkleić całą formułę z wykorzystaniem funkcji ADR.POŚR która u Ciebie zadziałała. Mam podobny problem do rozwiązania
i nie mogę sobie poradzić z wykorzystanie tej funkcji.
Dzięki
LibreOffice 4 na WINDOWS 7
ODPOWIEDZ