Wyszukaj fragment tekstu i wstaw z wartością liczbową [S]

Użytkowanie arkusza kalkulacyjnego
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Wyszukaj fragment tekstu i wstaw z wartością liczbową [S]

Post autor: Pysio »

Cześć, próbuję ogarnąć część arkusz, który będzie sortował mi produkty i wyświetlał ich stany.
W tym arkuszu jest dość spory bałagan w opisach produktów i chcę to wszystko przefiltrować i wrzucić wartości (sumy z kilku komórek) do osobnego arkusza.

Chodzi o sklejkę, mamy tutaj wiele formatów, rodzajów drzewa, grubości i typów...
Chcę na razie podzielić na najpopularniejszy format i drzewo- z tym sobie poradziłem. Są 2 typy drzewa w najpopularniejszym formacie więc stworzyłem to pod dwoma kolumnami.
Teraz dla tych typów chcę wyciągnąć jaką grubość mają te sklejki.

Czy jest możliwość aby znaleźć w tekście ciąg znaków "mm" i dodać wartość liczbową jaka występuje przed "mm"? Max są to 3 znaki.

Przykład jak to wygląda:
PRZYKŁAD1:
Sklejka 4mm 2500x1250 kl.II/III brzoza /*Tak, są tutaj niepotrzebne spacje, mogę je wcześniej usunąć funkcją, aby było łatwiej*/

PRZYKŁAD2:
-sklejka 15mm 100% BRZOZA BB/CP 1250x2500

PRZYKŁAD3:
-Sklejka brzoza 06,5mm 2500x1250 WD

Psikusów jest sporo, bo i są tam przecinki, są 2 cyfrowe liczby i jednocyfrowe.

Chcę aby w komórce pokazało mi wartość liczbową bądź fragment z mm. Bez znaczenia dla mnie- ważne aby wyświetliło mi te grubości.
Chciałbym uniknąć tworzenia osobnej kolumny dla każdej grubości, bo inaczej wyjdzie, że kolumn się pojawi kilkadziesiąt...


Podsumowując, formuła, która wyciągnie z tekstu samą grubość.
Ostatnio zmieniony czw mar 12, 2020 2:03 pm przez Pysio, łącznie zmieniany 1 raz.
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw wraz z wartością liczbo

Post autor: Jermor »

Musisz wykorzystać składnie wyrażeń regularnych. Wybierz Help i wpisz wyrażenia regularne.
Korzystając z nich znajdziesz miejsce gdzie zaczyna się grubość sklejki. Przyda się do tego funkcja SZUKAJ.TEKST, która pozwala na użycie takich wyrażeń. Będzie to np liczba n. Przy pomocy tej samej funkcji możesz znaleźć pozycje na której zaczyna się ciąg "mm", będzie to np liczba k. Z tego wynika, że długość ciągu opisującego grubość twojej sklejki to k-n+2. Mając te liczby możesz skorzystać z funkcji MID, która zwraca fragment tekstu zaczynający się na konkretnej pozycji i mający określona długość.
Ponieważ często forumowicze nie podają prawdziwego używanego oprogramowanie, podpisując OpenOffice a używając LibreOffice, dodaję, że w LibreOffice funkcja ta ma nazwę FRAGMENT.TEKSTU.
Przykład w załączeniu.
Załączniki
Pysio1.ods
(10.46 KiB) Pobrany 294 razy
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw wraz z wartością liczbo

Post autor: Pysio »

Dziękuję za wsparcie,
działa jak należy, zmodyfikowałem to do swoich potrzeb i jest super. Wrzuciłem to do jednej komórki, aby nie rozdzielać tego na 3.

W międzyczasie znalazłem podobne rozwiązanie (również do zmodyfikowania), ale jest zdecydowanie bardziej skomplikowane.
Gdyby któryś z czytelników potrzebował podobnego rozwiązania, można je znaleźć tutaj:
https://forum.openoffice.org/pl/forum/v ... stu#p21504
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Pysio »

Walczę z jednym tematem, podobnym do tego powyżej.

W międzyczasie przesiadłem się na LibreOffice bo OO wywalał mi często błedy...

W czym tkwi problem?

Mam produkt np. Płytki Sratatata 100x200
Lub płytka dupajas 21x90

(liczmy naturalne)

Jak wyciągnąć osobno pierwszą wartość i drugą?
Męczę się z "Fragment.tekstu" ale nie mogę coś tego ogarnąć.

Dla pierwszej wartości chciałem skorzystać z formuły:

Kod: Zaznacz cały

FRAGMENT.TEKSTU(C7;SZUKAJ.TEKST("[0-9,]*x";C7;1);ZNAJDŹ("x";C7)-(SZUKAJ.TEKST("[0-9,]*x";C7;1)))
Ale wywala mi błąd Value!
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Jermor »

Jeżeli rzeczywiście "przesiadłeś się" na LO, jak napisałeś (ale niczego nie zmieniłeś w podpisie, bo figuruje tam ciągle AOO 4.1.7), to możesz skorzystać z funkcji, która pojawiła się w LO, czyli funkcji REGEX.
Zakładając, że w twoich tekstach zapis w postaci 999x999 występują tylko jako wymiary i nie pojawiają się gdzieś indziej w tekście, możesz skorzystać z następujących formuł", gdy teksty są w A1:
dla liczby przed x: =LEWY(REGEX(A1;"[0-9]+x");DŁ(BIEŻĄCY())-1)
dla liczby po x: =PRAWY(REGEX(A1;"x[0-9]+");DŁ(BIEŻĄCY())-1)
REGEX wyekstrahuje z ciągu treść zgodną z wyrażeniem regularnym, w przypadku pierwszej formuły co najmniej jedna cyfra po której jest litera "x". W przypadku drugiej formuły litera "x" po której występuje co najmniej jedna cyfra.
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Pysio »

Dziękuję Ci dobry człowieku :bravo:

Zaraz sobie rozłożę tę funkcję na części pierwsze i przeanalizuję jak dokłądnie działa.

Dziękuję, że tworzycie to forum! Bardzo dużo się od Was nauczyłem. :)


EDIT: Działa wyśmienicie. Ale skopiowałem funkcję dla długości czyli m.
Działa fajnie, ale pojawia się z problem z liczbami z ułamakami np. 5,4m - pokazę wartość 4.
W jaki sposób nadać jej aby mierzyła do pierwszej spacji a nie znaku interpunkcyjnego (matematycznego w tym wypadku)?
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Pysio »

Ok, banał! Ja szukam dookoła a tu wystarczyło dodać przecinek do wartości wyszukujących czyli w klamrach [0-9,^] :)
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Jermor »

To jest właśnie problem tych, którzy pytają. Podają jeden przykład i na tej podstawie oczekują odpowiedzi uniwersalnej.
Podane przeze mnie rozwiązanie szuka układu "cyfry, litera x" albo "litera x, cyfry", tak jest to ujęte w wyrażeniach regularnych.
O tym jakie wyrażenie utworzyć decyduje wiedza o tym, jakie w ogóle układy mogą się pojawić. Napisałeś, że w nazwach występuje ciąg 999x999 i to on ma być rozkminiony. Teraz okazuje się, że pojawiają się także inne wpisy do rozpatrzenia.
Zakładam teraz, że w nazwach pojawia się układ albo wspomniany już 999x999 albo 999,999m
a więc np. listwa poprzeczna 5,4 m
Tu pojawiają się następne pytania. Jak dopisywane jest miano długości? Bezpośrednio po ostatniej cyfrze? ze spacja po ostatniej cyfrze? Może zostać wpisane cm, mm, m? Czy długość może być tylko liczbą całkowitą, czy zawsze wpisywana jest z przecinkiem i cyfr(ą|ami) po nim?
Wyrażenie regularne "[0-9]+(x|,?[0-9]+m)" realizuje takie wyszukiwanie:
poszukuje ciągu dowolnych cyfr (co najmniej jednej) po której wystąpi litera "x" albo, opcjonalnie, przecinek, nastepnie ciąg cyfr i litera "m"
Pionowa kreska w wyrażeniu regularnym rozdziela różne sposoby dopasowania. Czyli formuła =REGEX(A1;"[0-9]+(x|,?[0-9]+m)") użyta w miejsce pierwszej podanej przeze mnie znajdzie albo 21x, gdy przeglądany był ciąg "Płytki jakieś tam 21x300 AGFA", albo 5,4m, gdy ciągiem było "Listwa poprzeczna 5,4m płaska".
Zapewne pojawi się kolejny problem bo listwy oprócz długości mogą zawierać także dodatkowe wymiary np, rozmiar przekroju (także w postaci 20x30mm), albo promień (dla półwałka i ćwierćwałka).
Ale to już inne zagadnienie.
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Pysio »

Tak, masz 100% rację. Pośrednio ja też.
Pierwsze zagadnienie dotyczyło jedynie rozdzielenia wymiarów. Tak bym mógł te wartości wykorzystać dalej do ustalenia m3.
Kiedy mam szerokość i wysokość to potrzebuję jeszcze długość.
Przekład pierwszy był trochę od czapy, bo konkretne zagadnienie tyczy się belek drewnianych (poniekąd zgadłeś z tą listwą :) )
Mam np. belka 10x20 4,2m
10 - szerokość
20 - wysokość
no i pozostała długość. Tu na szczęście wystarczyło dodanie przecinka do warunków i przeszło.

O tyle dobrze, że system, który stawiam (do składania zamówień) robiony jest od zera, więc to jak będą nazwane produkty wychodzi ode mnie. Staram się formatować je tak by były przyjazne użytkownikowi i jednocześnie nieskomplikowane dla późniejszego excela.
Chyba to nawet jakoś wyszło :)
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Jermor »

Jeżeli wiesz, że w taki własnie sposób oznaczasz element, to długość belki znajdziesz formułą

Kod: Zaznacz cały

=WARTOŚĆ(LEWY(REGEX(A19;"[0-9]+,[0-9]+m");DŁ(BIEŻĄCY())-1))
Nie napisałeś jak zbudowałeś wyrażenie regularne, podając tylko fragment [0-9,^] taki zapis znajduje cyfrę, przecinek albo znak daszka (dlaczego on tu jest? nie wiem). Więc jeżeli np. twoje wyrażenie w całości wygląda tak "[0-9,^]+ to znajdzie zapis 2,4 ale jeśli pojawi się zapis 2,,3,4 to też zostanie znaleziony.
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Jermor »

W związku z tym fragmentem:
Pysio pisze:Staram się formatować je tak by były przyjazne użytkownikowi i jednocześnie nieskomplikowane dla późniejszego excela.
chciałbym ci zwrócić uwagę na to, że Excel nie obsługuje wyrażeń regularnych wykorzystanych w funkcji REGEX. Ich stosowanie jest możliwe dopiero w VBA, czyli wymaga stosowania makr.
Excel wykorzystuje tylko tzw. symbole wieloznaczne, w których "?" oznacza pojedynczy dowolny znak, "*" ciąg dowolnych znaków a "~" (tylda) umieszczona przed znakiem zapytania lub gwiazdką oznacza, że to ten właśnie znak ma zostać uwzględniony.
W tej sytuacji, skoro i tak tworzysz wszystko od zera, może dodaj w arkuszu dodatkowe kolumny szerokość, wysokość, długość
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Pysio »

Mam zagwozdkę z podobnym tematem.

Próbuję przenieść część funkcji:

Kod: Zaznacz cały

MID(L5,SEARCH("[0-9,]*mm",L5,1),FIND("mm",L5)-(SEARCH("[0-9,]*mm",L5,1))),0))
na Googlowy Arkusz. Niestety, google nie jest w stanie odczytać o co mi chodzi z tym: "[0-9,]*mm" i wywala błąd.
Czy macie może link do jakiegoś wsparcia gdzie są przedstawione dozwolone operatory?

Niestety nawet sam Google nie chce mi pomóc w tej kwestii. Chyba, że źle to nazywam? Ale dla OO tak to odczytałem.

Znalazłem jedynie temat walidacji numeru telefonu, ale to trochę nie mój temat, ale widzę, że operatory zakresu 0-9 pojawiaja się tutaj.
https://support.google.com/docs/thread/49770849?hl=en
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Pysio
Posty: 58
Rejestracja: czw mar 12, 2020 11:39 am

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Pysio »

Oczywiście przecinki oryginalnie pozamieniałem na średniki :)
OpenOffice 4.1.7 / LibreOffice 6.4.4.2 na Windows 10
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Jermor »

Nie chce mi się analizować co chcesz wyciągnąć z tekstu. W GoogleDocs masz jednak funkcję REGEXEXTRACT.
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
Awatar użytkownika
Jermor
Posty: 2288
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukaj fragment tekstu i wstaw z wartością liczbową [S

Post autor: Jermor »

Poszperałem po helpach w GoogleDocs i wychodzi na to, że jedynie funkcje REGEXREPLACE, REGEXEXTRACT i REGEXMATCH obsługują wyrażenia regularne.
AOO 4.1.15, LO 7.5.9 (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 istnieje jego rozwiązanie.
ODPOWIEDZ