Porównywanie kolumn

Użytkowanie arkusza kalkulacyjnego

Re: Porównywanie kolumn

Postprzez Jan_J » Cz gru 13, 2018 1:07 am

Czy porównanie ma być synchroniczne (A1 - B1; A2 - B2 itd), czy asynchroniczne (czy/gdzie A1 ma odpowiednik(i) w B, itd)?
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » Cz gru 13, 2018 10:06 am

synochronicznie :)
W A1 bedzie lista jednych produktow w B2 druga lista.
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Porównywanie kolumn

Postprzez Dawidek990 » Cz gru 13, 2018 11:05 am

Witaj, potrzebuje porównać dwie kolumny.
Mam liste produktów swóją, i potrzebują porównać ją z inna lista produktów, żeby sprawdzić czy je u siebie mam.

np:
Gdzies w kolumnie A będzie produkt ARTISTIC WAY WHITE STRUCTURE 20x40
W komórce B1 jest ARTISTIC WAY WHITE

Tutaj powinno wyskoczyć, że wystepuje.
Nazwy mogą się delikatnie różnić, początek jest raczej taki sam.

Potrzebuję czegoś w stylu "Sprawdź, czy w Kolumnie A jest pierwszych 15 znaków z komórki B1"

Następnie przeciągnąc to synchronicznie do B2, B3, B4 itd...

Da sie to zrobić?
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jan_J » Cz gru 13, 2018 11:23 am

Próbowałem scalić kilka wątków w jeden; nie wyszło, sorry.

Problem: nie bardzo wiadomo o co chodzi.
  1. o sprawdzenie, czy komórki o odpowiadających sobie numerach zawierają odpowiadające sobie treści (było w pierwszym poście, który mi umknął, przepraszam)
  2. o sprawdzenie, czy dana komórka w pierwszej komumnie posiada jakiś odpowiednik w drugiej kolumnie
    Gdzies w kolumnie A będzie produkt ARTISTIC WAY WHITE STRUCTURE 20x40
    W komórce B1 jest ARTISTIC WAY WHITE
  3. listy są w komórkach a nie w kolumnach(!)
    A1 bedzie lista jednych produktow w B2 druga lista
    i to SYNCHRONICZNIE(!?)
Są to różne zadania, odmienne są środki ich realizacji.


Następnie przeciągnąc to synchronicznie do B2, B3, B4 itd...
co w tym przypadku znaczy `synchronicznie`?
ja to rozumiem: pierwszy porównaj z pierwszym, drugi z drugim itd. -- jak punkt a., ale bez pewności, czy słowo zostało dobrze użyte.

Sądzę że chodzi o b., ale pewność byłaby lepsza od domysłów.

W takim przypadku jako pierwsza narzuca się funkcja wyszukująca (np. wyszukaj.pionowo albo podaj pozycję) np.
=podaj.pozycję("^" & B1 & ".*"; A$1:A$100; 0)
z włączonym użyciem wyrażeń regularnych -- wyjdzie liczba: OK, wyjdzie błąd: brak. Jeszcze obudować to testem na wartość liczbową (=czy.liczba(...)) i jest gotowe.
Problem się pojawi jeśli w B1 zostaną użyte znaki sterujące wyrażeń regularnych, jak . * ? [ ] { } \ & itp. Wtedy trzeba by je ratować przed niezrozumieniem za pomocą symbolu sterującego.
Ale być może mając więcej informacji, dałoby się uprościć postępowanie.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » Cz gru 13, 2018 6:15 pm

dam przyklad....
mamy koumne A
i w niej

1. asd rt 40
2. rtk wt 30
3. wsd ls 20

w B mamy np wsd i chce zeby znalazlo mi ze w kolumnie A w ktorejs komorce znajduje sie lub nie "wsd".
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Dawidek990 » Cz gru 13, 2018 6:23 pm

no wsumie o to chodzi o b, i dziala ta funkcja... powiedz mi istnieje cos podobnego zeby szukalo slow ktore sa w srodku?

np jak jest zdanie ARES GRAPHITE MOSAIC... a bede szukal "graphite mosaic" to znajdzie?
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jan_J » Cz gru 13, 2018 8:04 pm

Wzorzec postaci "^fraza.*" dopasowuje tekst "fraza" umieszczony nia początku komórki. Końcowe ".*" znaczące `cokolwiek, jakiejkolwiek długości` można by pominąć, ale wymaga to odznaczenia opcji [ ] kryteria wyszukiwania odnoszą się do całych komórek.
Jeżeli chcesz znaleźć tekst w środku komórki, wyrzuć ptaszka: "fraza" (o ile [ ] odnoszą się do całej) albo ".*fraza.*" (o ile opcja [x] odnoszą się) jest / ma być zaznaczona.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » Śr gru 19, 2018 7:48 pm

to mam jeszcze pytanie, co jesli w kolumnie znajduje sie kilka pozycji... on mi pokazuje tylko jedna pierwsza jaka znajdzie np w 5 wierszu pokazuje 5... a chcial bym zbey pokazal mi jak znajdzie 3 np. pozycje o tej nazwie w kolumnie, zeby mi pokazal gdzie sie znajduja np 5,28,7?
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jan_J » Śr gru 19, 2018 10:07 pm

Najłatwiej użyć filtra, ale tu imo nie bardzo...
Jeżeli formułami, trzeba zasymulować filtr za pomocą podaj.pozycję (wyszukiwanie), przesunięcie (ograniczania) oraz indeks (wyłuskiwanie),
tak by każde następne wyszukiwanie odbywało się w bloku od wiersza następującego po poprzednio znalezionym.
Nie jest to trudne, choć przygotowanie wymaga pewnej uwagi. Jeżeli przeszukasz forum, być może opisałem gdzieś gotowy przykład. W tej chwili nie bardzo mam czas, żeby to powtórzyć.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » Śr gru 19, 2018 10:21 pm

napisz prosze jak bedziesz mial czas ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jermor » Śr gru 19, 2018 11:33 pm

Nie wiem do czego jest potrzebne to działanie. Jeśli jednak chodzi o znalezienie tych wpisów to aby uniknąć tworzenia tego skomplikowanego wyrażenia zaproponowanego przez Jana_J proponuję takie rozwiązanie dla tak rozumianego przeze mnie zagadnienia:
  • Kolumna A zawiera jakieś wpisy tekstowe. Wpisy te mogą się powtarzać.
  • Kolumna B także zawiera jakieś wpisy. Te wpisy nie powtarzają się.
  • Ilość wpisów może być różna w każdej kolumnie.
  • Dla każdego wpisu w kolumnie B należy sprawdzić, czy w kolumnie A znajduje się jego odpowiednik a jeśli się znajduje, podać jego położenie w kolumnie A.
  • Ponieważ wpisy w kolumnie A mogą się powtarzać należy podać w których wierszach występują te powtórzenia.
Proponuje takie oto podejście:
  • Posortuję wpisy w kolumnie A narastająco.
  • W kolumnie D zbudowałem formułę podającą pierwsze wystąpienie wpisu z kolumny B w kolumnie A. Będzie to formuła warunkowa uzależniona od tego czy wpis w ogóle wystąpił.
  • W kolumnie E zbudowałem formułę obliczającą ile razy wpis z kolumny B wystąpił w kolumnie A. Jeśli ta wartość wynosi 0, czyli wpis nie występuje, nie będzie obliczana formuła z odpowiedniej kolumny D.
  • Posortowanie kolumny A spowoduje, że liczba z kolumny E będzie mówiła ile kolejnych wierszy zaczynając od wiersza obliczonego w kolumnie D ma taki sam wpis.
Na tę okoliczność załączam przykładowy plik
Załączniki
Dawidek990.ods
(12.27 KiB) Pobrane 7 razy
AOO 4.1.6, LO 6.1.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 ktoś podał rozwiązanie.
Jermor
 
Posty: 595
Dołączył(a): So paź 12, 2013 11:09 am

Re: Porównywanie kolumn

Postprzez Dawidek990 » Pt gru 21, 2018 1:32 pm

1. To jeszcze prosze o napisanie jak bedzie brzmialo polecenie zeby przy szukaniu wpisu np B1 w kolumnie A... szukał nie tylko całego zdania a jego czesci.
np. Potrzebuje znalezc
B1 "ANTRACYT STOPNICA NACINANA 29,7X119,7" ew "STOPNICA NACINANA 29,7X119,7"
w kolumnie A znajduje sie jednak "APENINO ANTRACYT STOPNICA NACINANA 29,7X119,7"

Chodzi o to zeby umial znalezc za pomocą "podaj pozycje" zdanie które może być ucięte :)

2. czy da sie zrobic tak żeby ew pomijal spacjepodczas wyszukiwania? ew konkretne znaki ktore mu wskaze typu * /

3. czy da sie zrobic tak że jeśli wpisuje np: "ACERO BIANCO 50x20" to znajdzie mi również "ACERO BIANCO 20x50" ?
Chodzi mi o to że czasem jest rozmiar na odwrót... wyszukiwarka allegro sobie radzi z tym, ciekaw jestem czy excel też by mógł :)
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jan_J » Pt gru 21, 2018 3:45 pm

Fragment "blabla" gdziekolwiek w tekście opisuje wzorzec ".*blabla.*"
Fragment "ala bela" albo "bela ala" dopasujesz przez "(ala bela|bela ala)".
`dowolna liczba`x`dowolna liczba` --> "[0-9]+x[0-9]+"
a z dopuszczeniem spacji przy x: "[0-9]+ ?x ?[0-9]+"

Ale to wszystko są półśrodki w tym przypadku. Za dużo szczególnych sytuacji.

ACERO BIANCO 50x20
ACERO BIANCO 20x50
ACERO BIANCO 50,0x20,0
ACEROBIANCO 50x20
ACERO BIANCO50x20
ACERO BIANCO 50 x 20
ACERO BIANCO 50×20
ACERO BIANKO 50×20
itd., itd. ...


W arkuszu nie ma gotowej funkcji obliczającej tzw. metrykę edycyjną -- jak daleko leży tekst od tekstu w sensie liczby ruchów żeby rozbić poprawkę. A taka rzecz bardzo pomaga w wyszukiwaniu narzucających podobieństw.
Portale analizujące zapytania mają takie funkcje na wyposażeniu; niektóre bazy danych również.
Można sobie od biedy radzić mnożeniem wariantów. ale będzie to coraz bardziej skomplikowane, a i tak dziurawe.

Dyskusja nad wnioskiem o włączenie metryki Lewensztejna do biblioteki funkcji Calca wisi w bugzilli LibreOffice (https://bugs.documentfoundation.org/sho ... i?id=88964) od roku 2015.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » Pt gru 21, 2018 3:47 pm

Fragment "blabla" gdziekolwiek w tekście opisuje wzorzec ".*blabla.*"
Fragment "ala bela" albo "bela ala" dopasujesz przez "(ala bela|bela ala)".
`dowolna liczba`x`dowolna liczba` --> "[0-9]+x[0-9]+"
a z dopuszczeniem spacji przy x: "[0-9]+ ?x ?[0-9]+"

jak ma to wygladac w polceniu = ?
bo to jak to piszesz to dla mnie czarna magia ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jan_J » Pt gru 21, 2018 5:18 pm

W pierwszym argumencie funkcji wyszukującej,
tj. albo wyszukaj.pionowo, albo podaj.pozycję
przy włączonym Narzędzia/Opcje/Calc/Oblicz/ [x] wyrażenia regularne w formułach
i wyłączonym Narzędzia/Opcje/Calc/Oblicz/ [ ] kryteria wyszukiwania odnoszą się do całych komórek

Np.
=podaj.pozycję(".*(ab|ba).*", a2:a2000;0)
wskaże numer pierwszego wiersza zawierającego gdzieś w tekście albo "ab", albo "ba".

więcej: https://help.libreoffice.org/Common/Lis ... essions/pl

Z tym, że przestrzegałbym przed rozbudowywaniem takich wyrażeń na okoliczność zmian kolejności, spacji, błędów typografii itp.
Nie do tego służą i bardzo szybko stracą czytelność. Tu by warto zastosować metrykę edycyjną właśnie.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » N sty 06, 2019 4:48 pm

wsumie ten schemat =podaj.pozycję(".*(ab|ba).*", a2:a2000;0) nie dziala, pokazuje mi blad 508

W kolumnie A mam ACERO BIANCO 19,3X120,2

W kolumnie B mam ACERO BIANCO 120,2X19,3
W kolumnie C mam ACERO BIANCO 19,3X120,2

Chce zastosowac cos w stylu =podaj.pozycję(".*(B1|C1).*", a2:a2000;0)
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Porównywanie kolumn

Postprzez Jan_J » Pn sty 07, 2019 5:44 pm

"ACERO BIANCO (19,3X120,2|120,2X19,3)"
Między cudzysłowami znajduje się opis wyszukiwanego tekstu; nie może tam być adresów komórek.
Da się taki opis umieścić w komórce, ale wtedy odwołanie do niej jest adresem, nie tekstem. Więc bez cudzysłowów.
Wreszcie, pokazany wyżej wzorzec nie jest wszechmogący. Pasują do niego tylko dwa wpisy:
ACERO BIANCO 19,3X120,2
oraz
ACERO BIANCO 120,2X19,3

zaś nie pasuje cały kosmos, m.in.
ACERO BIANCO 19,3x120,2
ACERO BIANCO 19,3 X 120,2
itp.

Więc rozwiąże on kilka problemów tylko pod warunkiem zachowania pewnej dyscypliny w tworzeniu opisów. A to znaczy, że tylko częściowo rozwiąże.

Czy nie byłoby lepiej stworzyć bazowy układ kolumn

A B C
Nazwa Szerokość Długość

w którym dopuścilibyśmy tekstowe nazwy oraz liczbowe wymiary (weryfikowane przez poprawność danych)
i z których generowalibyśmy opis w Twojej postaci, powiedzmy w kolumnie D, jako
=A2 & jeżeli(B2>B2; B2 & "X" & C2; C2 & "X" & B2)

po czym do dalszej obróbki/wyszukiwania wchodziłyby już tylko dane z D, to znaczy o ujednoliconym zapisie.
Nie byłyby potrzebne żadne warianty notacji. Porządek na wejściu upraszcza zarządzanie danymi.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3843
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Porównywanie kolumn

Postprzez Dawidek990 » Wt sty 08, 2019 1:39 pm

musial bysmi chyba pokazac jeden przyklad jak by mialo to wygladac ;]

akurat co do 19x50 a 50x19 to innych roznic nie ma.
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 30
Dołączył(a): Cz gru 13, 2018 12:15 am


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 14 gości