[SOLVED] Automatyczna wartość komórki jeżeli

Użytkowanie arkusza kalkulacyjnego
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

[SOLVED] Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Witam
Mam taki problem, potrzebuję formułę, dzięki której gdy w kolumnie D wpiszę numer rejestracyjny to w kolumnie F automatycznie wstawi się przypisana do tego numeru wartość. Nie wiem jak się do tego zabrać.
Ostatnio zmieniony pt wrz 13, 2013 1:01 pm przez FRIX1988, łącznie zmieniany 1 raz.
OpenOffice 4.1.14 na Windows 10
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: Automatyczna wartość komórki jeżeli

Post autor: Minio »

Zakładając, że masz gdzieś bazę numerów rejestracyjnych i odpowiadających im wartości, to:
WYSZUKAJ, WYSZUKAJ.PIONOWO, WYSZUKAJ.POZIOMO.
Prawdopodobnie najbardziej odpowiednia będzie ta druga, ale to już zależy od struktury Twojego zbioru danych.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Nie mam bazy, zrobiłem sobie z boku tabelki do której wprowadzam wartości brutto w dwóch kolumnach - w kolumnie K 6 numerów rejestracyjnych i obok nich w kolumnie L przypisane im wartości liczbowe określające wagę pojazdów. Rejestracyjne kolejno wpisuję w kolumnę D i chciałbym, żeby wartość przypisana pojawiała się w kolumnie F :)
OpenOffice 4.1.14 na Windows 10
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Automatyczna wartość komórki jeżeli

Post autor: Jan_J »

FRIX1988 pisze:[...] zrobiłem sobie z boku tabelki do której wprowadzam wartości brutto w dwóch kolumnach - w kolumnie K 6 numerów rejestracyjnych i obok nich w kolumnie L przypisane im wartości liczbowe określające wagę pojazdów.
Taki rejestr jest właśnie bazą. Maleńką, ale zawsze.
=wyszukaj.pionowo(wartość; baza; numer_kolumny; 1)
przy czym klucze (numery) w bazie winny być uporządkowane rosnąco, albo
=wyszukaj.pionowo(wartość; baza; numer_kolumny; 0)
bez założenia o porządku. Oba warianty różnią się dość istotnie pod względem reagowania na wpis nieistniejący w bazie.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Za każdym razem zwraca mi tą samą liczbę, nie wiem gdzie coś poknociłem. W załączniku materiał poglądowy.
Załączniki
TARY.ods
(8.94 KiB) Pobrany 239 razy
OpenOffice 4.1.14 na Windows 10
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Automatyczna wartość komórki jeżeli

Post autor: belstar »

LibreOffice 5.1.2.2 Ubuntu 16 LTS
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

troszkę pokomplikowane. Udało mi się to zrobić w sposób następujący formułą WYSZUKAJ:

Kod: Zaznacz cały

=WYSZUKAJ(D3;K3:K8;L3:L8)
gdzie:
D3 to komórka do której wpisuję interesujący mnie numer rejestracyjny
K3:K8 to numery rejestracyjne w tabelce (bazie) z boku
L3:L8 to przypisane do numerów w tabelce (bazie) warości

wystarczy przeciągnąć pierwszą komórkę i tabelka uzupełni się wartościami z tabelki. Pewnie komuś się przyda. Czytałem temat powyżej i nie miałem pojęcia o czym czytam :P ale dziękuję za pomoc. Chodziło mi o coś prostego jak powyżej. Można zamknąć.

EDIT.
Jednak działa prawidłowo tylko jeśli wpisywane numery są podawane w kolejności takiej samej jak są w tabelce. W przeciwnym razie zwraca nieprawidłowe wartości :(

EDIT2
czasem działa, a czasem oszukuje. nieogarniam.
w załączeniu plik poglądowy
EDIT3
belstar pisze:

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO(D3;K3:L8;2)
korzystając z powyższego zwraca 3 wartości z tabeli.
dla "sps 06240", "sps 03154" zwraca 14,8
dla "sps 8x13" - 13,32 (prawidłowo)
dla "sps 74uj" - 15,78 (prawidłowo)
dla "sps 01341" zwraca N/D (wartosc niedostepna) chociaż jest w tabelce
Załączniki
TARY 2.ods
(9.64 KiB) Pobrany 219 razy
OpenOffice 4.1.14 na Windows 10
arras_1
Posty: 148
Rejestracja: czw lip 19, 2012 8:08 pm

Re: Automatyczna wartość komórki jeżeli

Post autor: arras_1 »

Może spróbować za pomocą funkcji PODAJ POZYCJĘ i PRZESUNIĘCIE
Załączniki
TARY 2 przesunięcie.ods
(10.05 KiB) Pobrany 265 razy
OpenOffice.org 4.1.3 , Windows 10
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Teraz działa znakomicie! :) DZIĘKUJĘ!
OpenOffice 4.1.14 na Windows 10
therminus
Posty: 21
Rejestracja: pn sie 12, 2013 7:25 pm

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: therminus »

Witam
To ja jeszcze podam wersje z opcja "wyszukaj pionowo". Rozwiązanie to jest o tyle ciekawe, że można "bazę" trzymać w oddzielnym pliku.
Załączniki
tary.ods
(12.67 KiB) Pobrany 274 razy
LibreOffice 6.3 na Windows 10
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Automatyczna wartość komórki jeżeli

Post autor: Jan_J »

FRIX1988 pisze:troszkę pokomplikowane. [...]

Kod: Zaznacz cały

=WYSZUKAJ(D3;K3:K8;L3:L8)
[...]
belstar pisze:

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO(D3;K3:L8;2)
korzystając z powyższego zwraca 3 wartości z tabeli.
dla "sps 06240", "sps 03154" zwraca 14,8
dla "sps 8x13" - 13,32 (prawidłowo)
dla "sps 74uj" - 15,78 (prawidłowo)
dla "sps 01341" zwraca N/D (wartosc niedostepna) chociaż jest w tabelce
Wyszukaj -> Wyszukaj.pionowo
Ta funkcja domyślnie zakłada, że tabela jest uporządkowana, w związku z czym przeszukuje szybko metodą bisekcji. W przypadku, kiedy porządku nie ma, wyniki są bez sensu. W przypadku uporządkowanym, ale kiedy wpis nie figuruje w tabeli, wynik jest podawany z miejsca w którym wpis mógłby się znaleźć.

Użyj

Kod: Zaznacz cały

=WYSZUKAJ.PIONOWO(D3;K$3:L$8;2;0)
Końcowe 0 mówi, żeby przeszukiwać tabelę tak, jakby nie była uporządkowana. Funkcja Wyszukaj nie ma takiego parametru.

Podaj.pozycję / Przesunięcie (albo Podaj.pozycję / Indeks) robią to samo, tylko w dwóch etapach. Też musisz przekazać funkcji wyszukującej, że spis jest nieuporządkowany, i robisz to tak samo jak wyżej.

Możesz też nazwać zakres K3:L8 (np. tary) i użyć w formułach nazwy zamiast adresu. Zyskasz na czytelności oraz na swobodzie w przypadku dopisania dalszych kodów.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Obudziła się wczoraj we mnie wena i zrobiłem sobie bardziej zaawansowaną bazę w nowym skoroszycie, w drugim arkuszu.
Po wpisaniu numeru rejestracyjnego zwraca już 3 pola, tj. tarę, nazwisko kierowcy i spedycję.
Chciałem wykorzystać jej możliwości na zasadzie by kilka plików mogło z niej pobierać dane naraz bym nie musiał w każdym pliku osobno dodawać nowych pozycji, tylko wystarczyłoby uruchomić plik z bazą i sobie pracować.
edytowałem zatem formułę w sposób następujący:

Kod: Zaznacz cały

=PRZESUNIĘCIE('file:///E:/Pszczyński Asfalt 27.07.13/Pszczyński Asfalt/WMB Wola/BAZA TAR.ods'#$Arkusz2.$C$2;PODAJ.POZYCJĘ(E19;'file:///E:/Pszczyński Asfalt 27.07.13/Pszczyński Asfalt/WMB Wola/BAZA TAR.ods'#$Arkusz2.C3:C462;0);1)
Gdzie "BAZA TAR.ods" to plik w którym w arkuszu 2 mam odpowiednio numer rejestracyjny w kolumnie B, nazwisko w C, tarę w D i spedycję w E.
Niby powinno działać koncertowo, jednak zwraca "N/D"
Postanowiłem wrócić do tematu i zapytać, ale zobaczyłem Twój post Janie i za pomocą "Przesunięcia" najwyraźniej nie da się korzystać z innych plików, szkoda, że nie zerknąłem dzień wcześniej :P
OpenOffice 4.1.14 na Windows 10
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: Jan_J »

Da się. Używam składni postaci

Kod: Zaznacz cały

=PRZESUNIĘCIE('plik_bazy'#klucze;PODAJ.POZYCJĘ(A1; 'plik_bazy'#klucze; 0)-1; 0; 1; liczba_kolumn)
Przy tym klucze to nazwany zakres w zewnętrznym arkuszu, dla zwiększenia czytelności i niezawodności. Ale z adresowaniem postaci 'plik_bazy'#$Arkusz.$kolumna$wiersz także działa. 'plik_bazy' to oczywiście URL z pełną ścieżką.
W Twoim przykładzie adres C3 nie jest zablokowany, co przy kopiowaniu formuły na pewno prowadzi do błędów logicznych w adresowaniu.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Kod: Zaznacz cały

=PRZESUNIĘCIE('file:///E:/Pszczyński Asfalt 27.07.13/Pszczyński Asfalt/WMB Wola/BAZA TAR.ods'#$Arkusz2.$C$2;PODAJ.POZYCJĘ(E19; 'file:///e:/pszczyński asfalt 27.07.13/pszczyński asfalt/wmb wola/baza tar.ods'nazwiska; 0)-1; 0; 1; 1)
kolumnę z nazwiskami nazwałem "nazwiska" (w pliku BAZA TAR.ODS)
z # w formule zwraca "NAZWA?", więc dałem bez i wyświetla 508: błąd ustawienia nawiasów, hm? :)
OpenOffice 4.1.14 na Windows 10
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: Jan_J »

Nie brakuje przypadkiem # ?
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

Jan_J pisze:Nie brakuje przypadkiem # ?
w przypadku:

Kod: Zaznacz cały

=PRZESUNIĘCIE('file:///E:/Pszczyński Asfalt 27.07.13/Pszczyński Asfalt/WMB Wola/BAZA TAR.ods'#$Arkusz2.$C$2;PODAJ.POZYCJĘ(E19; 'file:///e:/pszczyński asfalt 27.07.13/pszczyński asfalt/wmb wola/baza tar.ods'#nazwiska; 0)-1; 0; 1; 1)
zwraca błąd "NAZWA?"
co wydaje się dziwne, bo odnośniki są zrobione analogicznie do przypadku w którym baza byłaby w tym samym pliku.
OpenOffice 4.1.14 na Windows 10
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: Jan_J »

... istotnie...
Libre: niby się da, ale po ponownym otwarciu mamy błąd #nazwa / #name. I odświeżanie łącza nic nie daje.
Apache: błąd #ref, a łączy aktualizować w ogóle się nie da.
Nadaje się moim zdaniem na zgłoszenie błędu.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

hm, tak się zastanawiam czy może nie dało by się wykorzystać tej formuły:

Kod: Zaznacz cały

=DDE("soffice"; "file:baza tar.ods";"arkusz2.c1")
Sama w sobie działa prawidłowo, czy dało by się ją wpleść do formuły z przesunięciem.
Myślałem jeszcze, żeby drogą ewentualności zrobić to trochę naokoło tzn. w skoroszycie, który ma korzystać z bazy w arkuszu2 porobić odnośniki z pomocą tej formuły. Automatycznie aktualizowałaby mi się wtedy baza w pliku docelowym przy otwartym pliku bazy, a stąd już tylko porobić przesunięcia w odpowiednich komórkach i voile'a :) jedno jest pewne, dzień z życia wyjęty jak nic, baza na chwilę obecną ma 125 pozycji x 4 kolumny :alarm:
OpenOffice 4.1.14 na Windows 10
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: Jan_J »

Nie warto. Zajedziesz się, a aktualizacja będzie frustrująco wolna.
Taka formuła

Kod: Zaznacz cały

=PRZESUNiĘCIE('file:///ścieżka_do_pliku.ods'#$Arkusz1.$A$1;0;0;100;2)
zatwierdzona jako tablicowa, zrobi to jednym rzutem. Działa i w LO, i w OO 4. Jedynym minusem jest utrzymywanie kopii danych w arkuszu roboczym.
100 i 2 to oczywiście wymiary tabeli.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
FRIX1988
Posty: 24
Rejestracja: pt sie 16, 2013 1:49 pm

Re: [SOLVED] Automatyczna wartość komórki jeżeli

Post autor: FRIX1988 »

świetnie :) formuła ta odbudowała tabelę w kilka sekund.
Kopia w arkuszu roboczym jest mi na rękę akurat, więc to chyba wszystko :) póki co zdaje się działać bezbłędnie :)
Wielkie Dziękuję Janie z mojej strony :)
OpenOffice 4.1.14 na Windows 10
ODPOWIEDZ