Wylaczenie slowa ze zdania ;]

Użytkowanie arkusza kalkulacyjnego

Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Pt mar 01, 2019 7:57 pm

Witam, orietuje sie ktos czy istnieje jakas funkcja lub polaczenie funkcji ktora mogla by mi wylaczyc ze zdania tylko to co znajduje sie od konca do ostatniej spacji?
np PŁYTKI PARADYŻ ABRILA BIANCO MOZAIKA MIX 29,8X29,8
Chce zeby zostalo samo 29,8X29,8

wiem ze np funkcja =DŁ(F2)-DŁ(PODSTAW(F2;"X";"")) pokazuje mi ile X znajduje sie w danej komorce.

pomoze ktos? ;]
pozdrawiam
Dawidek990 ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez belstar » So mar 02, 2019 9:14 pm

Kod: Zaznacz cały   Rozszerz widokZwiń widok
=USUŃ.ZBĘDNE.ODSTĘPY(PRAWY(PODSTAW(A1;" ";POWT(" ";200));200))
LibreOffice 5.1.2.2 Ubuntu 16 LTS
belstar
 
Posty: 654
Dołączył(a): Cz mar 17, 2011 9:08 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » So mar 02, 2019 9:58 pm

dzieki dziala
jest tez inna opcja
=PRAWY(B2;DŁ(B2)-SZUKAJ.TEKST("[^\s]+$";B2)+1)
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » So mar 02, 2019 10:09 pm

mam dodatkowe pytanie, gdyby nazwa byla: PŁYTKI PARADYŻ ABRILA 29,8X29,8 BIANCO MOZAIKA MIX
i chcial bym wylaczyc 29,8X29,8 czyli zalozmy ze formula szuka "X" i wycina do spacji przed i za nim?
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez belstar » N mar 03, 2019 1:37 pm

Najpierw użyj funkcji ZNAJDŹ() do określenia pozycji X w ciągu. Później funkcji LEWY() i PRAWY() do spreparowania odpowiednich ciągów. LEWY() zwróci 29,8 na końcu ciągu, a PRAWY() na początku.I teraz użyj formuły z początkowych postów i połącz to co zwrócą, oczywiście jedną formułę musisz przerobić żeby ci zwróciła pierwszy wyraz ciągu.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
belstar
 
Posty: 654
Dołączył(a): Cz mar 17, 2011 9:08 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » N mar 03, 2019 7:13 pm

nie jestem mistrzem od laczenia formul, mozesz napisac jak to powinno wygladac? ;]
znalazlem inna formule na to, ale ciekaw jestem jak ty to widzisz ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez belstar » N mar 03, 2019 8:05 pm

Np. tak:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=PRAWY(LEWY(B1;ZNAJDŹ("X";B1));DŁ(LEWY(B1;ZNAJDŹ("X";B1)))-SZUKAJ.TEKST("[^\s]+$";LEWY(B1;ZNAJDŹ("X";B1)))+1)&LEWY(PRAWY(B1;DŁ(B1)-ZNAJDŹ("X";B1));ZNAJDŹ(" ";PRAWY(B1;DŁ(B1)-ZNAJDŹ("X";B1)))-1)

Rozwiązań na pewno może być wiele.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
belstar
 
Posty: 654
Dołączył(a): Cz mar 17, 2011 9:08 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » N mar 03, 2019 10:32 pm

i to jest jedna formula? ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jan_J » N mar 03, 2019 10:36 pm

Rozwiązań na pewno może być wiele.

LibreOffice Calc w wersji >= 6.2 posiada funkcję REGEX, która w tym zastosowaniu jest jak znalazł:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=regex(B1, " *[^ X]*X[^ ]*", "")
Usuń całe słowo zawierające literę X, wraz z poprzedzającą grupą spacji.
6.2 to najnowsza, na razie eksperymentalna wersja pakietu LO.
https://help.libreoffice.org/6.2/en-US/ ... regex.html
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python 3.8 ∙ Unicode 13 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4157
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Pn lip 08, 2019 6:43 pm

=PRAWY(LEWY(B1;ZNAJDŹ("X";B1));DŁ(LEWY(B1;ZNAJDŹ("X";B1)))-SZUKAJ.TEKST("[^\s]+$";LEWY(B1;ZNAJDŹ("X";B1)))+1)&LEWY(PRAWY(B1;DŁ(B1)-ZNAJDŹ("X";B1));ZNAJDŹ(" ";PRAWY(B1;DŁ(B1)-ZNAJDŹ("X";B1)))-1)

Ta formula zadzialala... pytanie co mam zrobic w przypadku gdy mam:
<img src=''https://a.allegroimg.com/s1440/01bbc8/277586794e3baa4f63c35d0b0bb8'' asdhbas ahsbd ahsbd
a potrzebuje tylko link: https://a.allegroimg.com/s1440/01bbc8/2 ... c35d0b0bb8
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Pn lip 08, 2019 8:46 pm

Rozwiązaniem będzie formuła:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=MID(A1;SZUKAJ.TEKST("'";A1)+2;SZUKAJ.TEKST("' .*$";A1)-SZUKAJ.TEKST("'";A1)-3)

Uwaga!
Jeśli załączony przez ciebie przykład jest kopią tego co otrzymałeś, to zwróć uwagę na to, że w zapisie
Dawidek990 napisał(a):<img src=''https://a.allegroimg.com/s1440/01bbc8/277586794e3baa4f63c35d0b0bb8'' asdhbas ahsbd ahsbd

Przed literami https oraz po literach bb8 nie występuje znak cudzysłowu lecz dwa następujące po sobie znaki apostrofu. Dlatego w funkcjach SZUKAJ.TEKST szukanym ciągiem jest znak apostrofu stąd zapis "'" czyli cudzysłów, apostrof, cudzysłów. Ten ciąg znajduje położenie pierwszego apostrofu, dlatego początek wyodrębnionego tekstu zaczyna się +2 znaki dalej. Ciąg "' .*$" czyli cudzysłów, apostrof, spacja, kropka, gwiazdka, znak dolara, cudzysłów znajduje położenie ostatniego apostrofu w ciągu stąd odpowiednia korekta do określenia długości wyodrębnionego ciągu.
Jeśli w ciągu wystąpią jednak cudzysłowy to formułę trzeba zmodyfikować.
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Pn lip 08, 2019 9:25 pm

okej, to moze troche inaczej... zeby to byl obardziej uniwersalne...
link ktory chce wyodrebnic jest w kodzie html...

</div>

</section>

<section class=''section''>

<div class=''item item-6''>
<section class=''image-item''>
<img src=''https://a.allegroimg.com/s1440/01ccf7/b6dc32034eb491aec55870ea58e4'' srcset=''https://a.allegroimg.com/s360/01ccf7/b6dc32034eb491aec55870ea58e4 360w, https://a.allegroimg.com/s720/01ccf7/b6 ... 5870ea58e4 720w, https://a.allegroimg.com/s1024/01ccf7/b ... 5870ea58e4 806w'' sizes=''(min-width: 1200px) 560px, (min-width: 992px) 50vw, 100vw'' width=''806px''/>
</section>

</div>


to jest jego czesc... niestety formula ktora podales na ten nie zadziala... ja potrzebuje pierwszy link.
Przydlo by sie co w stylu: znajdz https i skopiuj wyrazenie do apostrofu (bez apostrofu).
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Pn lip 08, 2019 10:33 pm

Nie zadziałała bo załączony przykład sugerował iż pozostała część ciągu to tylko znaki literowe. Napisałem, że funkcja znajduje ostatni znak apostrofu. Faktyczny ciąg jest dużo dłuższy i w dalszej części zawiera kolejne znaki, więc ten ostatni nie jest w ogóle tym jaki ma zostać wykorzystany.
Jeśli to ma działać, to pierwsze pytanie
skąd jest pobrany ten kod? Elementy kodu html są ujmowane w cudzysłowy albo pojedyncze apostrofy. W kodzie zaprezentowanym przez ciebie są podwójne apostrofy!
Pytanie drugie, jak naprawdę wygląda ciąg znakowy, z którego ma zostać wyciągnięty link?
Zakładając, że chodzi o pierwszy adres zamieszczony wewnątrz znacznika <img> formuła może być następująca:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=MID(A1;SZUKAJ.TEKST("http";A1);SZUKAJ.TEKST("'";A1;SZUKAJ.TEKST("http";A1))-SZUKAJ.TEKST("http";A1))

Ta formuła dotyczy przedstawionego przez ciebie przykładu, w którym występują podwójne apostrofy a nie cudzysłowy.
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Pn lip 08, 2019 10:47 pm

1. tak wyeksportowal to EasyUploader jako opis aukcji z allegro.
2. Wlasnie tak jak go podalem.

Dziala dzieki. Chociaz myslalem ze jest na to prostrza formula... ale moze byc ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » N lip 14, 2019 5:54 pm

Mam inny problem kolejny.

Mam w jednej komorce tekst typu:
<id>550124</id><guid>238974shdbf23874dgf23hr</guid><id>550125</id><guid>238974shdbf23874dgf23hr</guid><id>550126</id><guid>238974shdbf23874dgf23hr</guid><id>5503454</id> <guid>238974shdbf23874dgf23hr</guid><id>550456</id> <guid>238974shdbf23874dgf23hr</guid><id>550456</id><guid>238974shdbf23874dgf23hr</guid>


Potrzebuje zeby formula oddzielila wszystkie numery id, moze byc do osobnych komorek moze byc w tej samej, ale zeby formula wydzielila nie jeden a wszystkie numery id ktore sie znajduje w komorce...
Jest to wgl mozliwe?

czyli powinienem otrzymac: 550124 550125 550126 5503454 550456 550456... tych id jest kilkaset czesto i podzielenie tekstu na kolumny w calcu jest ograniczone.
kazdy id zaczyna sie od 550... moze to pomoze?
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Pn lip 15, 2019 10:48 pm

Jest to możliwe, ale nie przy pomocy formuł wbudowanych do Calca. Dlatego napisałem ci funkcję w basicu, która robi to co jest ci potrzebne.
Funkcję możesz przegrać do kontenera makr związanego z twoim plikiem i wtedy będzie działała tylko w tym pliku. Możesz też wgrać ją do kontenera "Moje makra" do biblioteki "Standard" i wówczas będzie dostępna w każdym otwartym pliku Calca na twoim komputerze.
Oto funkcja
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Function liczby(tekst,przed,za, optional separator) as string
REM Funkcja z ciągu tekstowego "tekst" wyodrebnia wszystkie teksty
REM znajdujące sie między ciagami "przed" i "za" i łączy je w jeden
REM nowy ciąg rozdzielając je ciągiem podanym jako "separator".
dim t as string
dim pos1 as long, pos2 as long
rem pos1 wyznacza położenie ciągu "przed", pos2 położenie ciągu "za"
dim i as integer
if IsMissing(separator) then separator=" "
pos1=1 : pos2=1
t=""
pos1=InStr(pos1,tekst,przed)
if pos1=0 then
   liczby="brak ciągu przed"
   exit Function ' ciąg "przed" w ogóle nie wystepuje w tekście
End If
i=len(przed) 'zawiera długośc ciagu "przed"
do
   pos2=InStr(pos1,tekst,za)
   t=t &  mid(tekst,pos1+i,pos2-pos1-i) & separator
   if pos2=0 then exit do
   pos1=InStr(pos2,tekst,przed)
loop while pos1<>0
liczby=left(t,len(t)-len(separator))
End Function

Funkcja ma cztery parametry. Pierwszy - tekst -określa tekst jaki ma być przeanalizowany, drugi - przed - określa jak wygląda ciąg poprzedzający wymagany do wyodrębnienia ciąg znaków, trzeci - za - określa ciąg jaki kończy poszukiwany ciąg i czwarty pozwala określić jakim separatorem będą rozdzielane znalezione ciągi. Jeśli czwarty parametr zostanie pominięty, separatorem będzie spacja.
Czyli jeśli twój ciąg jest np. w komórce A1, to możesz wpisać funkcję do wybranej komórki w takiej np. postaci:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=LICZBY(A1;"<id>";"</id>";"-++-")

Zostaną wyodrębnione i połączone w całość wszystkie ciągi zawarte między "<id>" i "</id>", dodatkowo rozdzielone znakami "-++-"
Oczywiście ciągi "przed", "za" i "separator" mogą być wpisane do wybranych komórek i to one będą wówczas parametrami tej funkcji.
Funkcja może wyodrębniać dowolne ciągi zawarte między "przed" i "za", nazwę LICZBY przyjąłem, bo tobie chodziło o wyodrębnienie liczb.

Edytowane 16.07.19
Tych, których zainteresowała zaprezentowana funkcja odsyłam do działu "Projekty użytkowników". Zamieściłem tam poprawioną funkcję. Zmieniłem jej nazwę na EKSTRAKT i dodałem opis.
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Pn lip 15, 2019 11:43 pm

wow dziala... wielkie dzieki :)
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Pn lip 15, 2019 11:44 pm

Calc ma 1024 kolumny, więc 759 da się rozpisać. Jak już będą rozpisane w komórkach to można zrobić transpozycję obszaru, czyli zamienić wiersze z kolumnami. Najpierw kopiuj a potem wklej specjalnie -> transponuj
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Wt sie 20, 2019 1:39 am

Jarmor napisał:
Jest to możliwe, ale nie przy pomocy formuł wbudowanych do Calca. Dlatego napisałem ci funkcję w basicu, która robi to co jest ci potrzebne.
Funkcję możesz przegrać do kontenera makr związanego z twoim plikiem i wtedy będzie działała tylko w tym pliku. Możesz też wgrać ją do kontenera "Moje makra" do biblioteki "Standard" i wówczas będzie dostępna w każdym otwartym pliku Calca na twoim komputerze.
Oto funkcja...


Powiedz mi Jarmor, czy ta funkcje da sie zmodyfikować tak, zeby szukała drugiego wyrażenia w tekscie a nie pierwszego znalezionego?
Czyli mam =LICZBY(A1;"<id>";"</id>";"-++-") i zrobic cos w stylu =LICZBY(A1;"<id>";"</id>";"-++-"2") jesli w tekscie wystepuje 5 <id>...</id> to on wskaze to drugie? ew trzecie, czwarte itd?
Mogl bys to zrobic? ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Wt sie 20, 2019 6:51 pm

OK. Zmodyfikowałem funkcję i zamieściłem jej poprawioną wersję w sekcji "Projekty użytkowników"
https://forum.openoffice.org/pl/forum/viewtopic.php?f=28&t=5036
Opis funkcji tamże.
W skrócie. Dodatkowe parametry pozwalają wskazać który ciąg ma zostać zwrócony oraz ile kolejnych.
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Śr sie 21, 2019 1:09 pm

super, dzieki wielkie ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Śr gru 04, 2019 2:57 am

A powiedz mi, dalo by sie tak zrobic zeby formula wykrywala np drugie w komorce wystepujece slowo jako poczatek, i np czwarte wystepujace slowo jako koniec?
np ekstrakt(a1;"mleko"(ale to ktore wystepuje jako 2 w komorce nie pierwsze);"koniec"(ale np w komorce wystepuja 4 slowa koniec, i zeby znalazl to trzecie np) )
czesto czegos takiego potrzebuje, zeby wyciagnal mi tekst do ktoregos tam slowa ktore wystepuje w tekscie, a nie koniecznie pierwszego ktore znajdzie.
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » So gru 07, 2019 2:22 pm

W odpowiedzi na twój problem napisałem jeszcze jedną funkcję, nazwałem ją: GDZIEJEST. Jej opis, zastosowanie i kod źródłowy znajduje się w sekcji "Projekty użytkowników" pd adresem https://forum.openoffice.org/pl/forum/viewtopic.php?f=28&t=5167
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Dawidek990 » Pn gru 09, 2019 2:20 am

emm, nie bardzo rozumiem jak ma to dzialac?
dam ci przyklad... ma tekst:

</P><P>POSIADAMY</P><P>PŁYTKI GRANITOWE, MARMUROWE I TRAWERTYNOWE</P><P>W</P><P>CENIE HURTOWEJ !</P>
<P>NA TEJ AUKCJI PRZEDSTAWIAMY PAŃSTWU</P><P>ŁUPEK KAMIENNY NR 19</P><P>Z KAMIENIA NATURALNEGO !</P>
<P>Znajdzie zastosowanie jako okładzina ścienna, kominkowa, posadzkowa.</P>


ja potrzebuje wyciagnac z niego tylko "<P>NA TEJ AUKCJI PRZEDSTAWIAMY PAŃSTWU</P><P>ŁUPEK KAMIENNY NR 19</P><P>Z KAMIENIA NATURALNEGO !</P>"
ew bez tych <p> ... ale sam taki tekst. Czyli na podstawie ekstrakt bylo by to: EKSTRAKT(a1;"na tej aukcji";"</p>") jednak musial bym mu wskazac ze teskt koncowy </p> ma wyszukac drugi nie pierwszy po wystepujacym tekscie "na tej aukcji". jak mam to zrobic ta nowa funkcja bo jej nie zrozumialem?
OpenOffice 4.1.6 Windows 10
Dawidek990
 
Posty: 57
Dołączył(a): Cz gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Rafkus » Pn gru 09, 2019 3:58 pm

Stworzona przez @Jermora Funkcja EKSTRAKT(tekst;przed;za;separator;pierwszy;ile) to potrafi. Wpisz polecenie:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=EKSTRAKT(A1;"<P>";"</P>";" ";5;3)

Gdzie:
A1 - komórka z danym tekstem
"<P>";"</P>" - początek i koniec fragmentu tekstu
" " - separator(pomiędzy cudzysłowami jest spacja), zamiast tekstu <P> lub </P> będzie wstawiona spacja
5 - interesuje cię 5 fragment tekstu
3 - interesują cię 3 kolejne fragmenty
Wynik:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
NA TEJ AUKCJI PRZEDSTAWIAMY PAŃSTWU ŁUPEK KAMIENNY NR 19 Z KAMIENIA NATURALNEGO !
OpenOffice 4.1.6. oraz LibreOffice 6.4 Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Avatar użytkownika
Rafkus
 
Posty: 164
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Pn gru 09, 2019 5:12 pm

Dokładnie tak jak to opisałem przy omawianiu funkcji FRAGMENT.TEKSTU.
Jeżeli
</P><P>POSIADAMY</P><P>PŁYTKI GRANITOWE, MARMUROWE I TRAWERTYNOWE</P><P>W</P><P>CENIE HURTOWEJ !</P>
<P>NA TEJ AUKCJI PRZEDSTAWIAMY PAŃSTWU</P><P>ŁUPEK KAMIENNY NR 19</P><P>Z KAMIENIA NATURALNEGO !</P>
jest tekstem znajdującym się w jednej komórce (na niebiesko zaznaczyłem to, co ma zostać wyciągnięte) to trzeba określić położenie pierwszego znaku w tym tekście (w tym przykładzie jest to litera N w słowie NA), oraz położenie ostatniego znaku wchodzącego do wymaganego fragmentu (w tym przykładzie jest to znak wykrzyknika).
Podane przeze mnie przykłady zakładają, że przeszukiwany tekst znajduje się w komórce A1.
Położenie pierwszego znaku określimy wyszukując ogranicznika "<P>".
Jest to piąty ciąg w tym tekście, zatem =GDZIEJEST("<P>";A1;5)+3.
Funkcja znajdzie piąte wystąpienie ciągu "<P>", ale położenie pierwszej litery jest o 3 dalej (o długość ogranicznika). Zakładam, że ten wynik znajdzie się w B1.
Ogranicznikiem zamykającym wyszukiwany fragment jest "</P>" W tym przykładzie jest to akurat ostatnie wystąpienie.
Można zatem wpisać funkcję =GDZIEJEST("</P>";A1;"e").
W przypadku gdy ogranicznik zamykający ciąg jest ostatnim elementem tekstu, to do prościej jest użyć funkcji DŁ(A1)-3. Liczba 3 to pomniejszona o 1 długość ogranicznika zamykającego.
Zakładam, że ten wynik znajdzie się w C1.
Ostatecznie formuła "wyciągająca" tekst, znajdująca się D1 to
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=FRAGMENT.TEKSTU(A1;B1;C1-B1)

Pozostaje jednak problem znajdujących się wewnątrz tego wyciętego tekstu ciągów "<P>" i "</P>", które nie powinny znaleźć się w wyszukanym tekście.
Przyjmując, że każde wystąpienie "<P>" ma zostać zastąpione ciągiem pustym a każde wystąpienie ciągu "</P>" znakiem spacji można w komórce E1 wpisać taką formułę:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=PODSTAW(PODSTAW(D1;"<P>";"");"</P>";" ")
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Jermor » Pn gru 09, 2019 5:25 pm

@Rafkus trafnie zauważył, że funkcja EKSTRAKT da radę. W problemie @Dawidek990 rozumiałem, że chodzi o możliwość wycięcia fragmentu o podanych ogranicznikach (mogą być takie same) z włączeniem dowolnego z nich do "wyciąganego" tekstu. Stąd ta nowa funkcja.
AOO 4.1.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1210
Dołączył(a): So paź 12, 2013 11:09 am

Re: Wylaczenie slowa ze zdania ;]

Postprzez Rafkus » Pn gru 09, 2019 5:31 pm

Zakładam teraz, że tekst NA TEJ AUKCJI nie ma stałego umiejscowienia, tzn w twoim przykładzie jest on w piątej części, ale może zdarzyć się że wystąpi np w 7, albo i 11 a chcesz wyodrębnić część zaczynającą się dokładnie od tych słów automatycznie. W tym problemie pomoże własnie nowa funkcja @Jermora GDZIEJEST(co; gdzie;n) - poda ona od którego znaku zaczyna się poszukiwana fraza ( można również określić w niej które wystąpienie danej frazy cię interesuje).
W twoim przykładzie będzie to:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=GDZIEJEST("NA TEJ AUKCJI"; A1;1)

Wynikiem tej funkcji jest pierwsze wystąpienie tekstu NA TEJ AUKCJI w tekście znajdującym się w komórce A1 - wyszło mi że zaczyna się ono na 104 pozycji.
Edytowane: Wycofuję się z pomysłu wykorzystania funkcji MID na rzecz poniższego
Teraz można wykorzystać funkcję pozwalającą wyodrębnić fragment tekstu (W mojej wersji OO nie ma funkcji FRAGMENT.TEKSTU, a raczej występuje ona pod nazwą MID):
=MID(A1;104-3;DŁ(A1))
gdzie:
A1 - komórka z tekstem źródłowym;
104-3 - znaleziona fraza NA TEJ AUKCJI zaczyna się na 104 pozycji, od niej odejmuję 3 aby nowy wyodrębniony fragment tekstu zaczynał się od <P>
DŁ(A1) - długość tekstu oryginalnego
Formułą tą wykluczyłem pierwsze 101 znaków z tekstu początkowego (z komórki A1).

Czemu z tego zrezygnowałem: Ostatnim parametrem funkcji MID jest liczba określająca jak długi ma być wyodrębniony fragment a nie do którego znaku...(sorki pomyliło mi się ;) )

Zamiast funkcji MID (czy też FRAGMENT.TEKSTU) proponuję jednak zastosowanie funkcji ZASTĄP("tekst"; pozycja; długość; "nowy tekst"), czyli
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=ZASTĄP(A1;1;104-1;"<P>")

Formułą tą zamieniłem tekst z komórki źródłowej A1 od znaku 1 do 104-1 (jednego znaku przed poszukiwaną frazą) tekstem <P>. Dla tego nowego tekstu można wykorzystać funkcję EKSTRAKT(Nowy tekst;przed;za;separator;pierwszy;ile)

Oczywiście wszystkie działania można zmieścić w jednej formule:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
=EKSTRAKT(ZASTĄP(A1;1;GDZIEJEST("NA TEJ AUKCJI";A1;1)-1;"<P>");"<P>";"</P>";" ";1;3)
OpenOffice 4.1.6. oraz LibreOffice 6.4 Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Avatar użytkownika
Rafkus
 
Posty: 164
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Wylaczenie slowa ze zdania ;]

Postprzez martarak » Śr gru 18, 2019 12:41 am

Najlepie przeanalizować ten przykład:


=USUŃ.ZBĘDNE.ODSTĘPY(PRAWY(PODSTAW(A1;" ";POWT(" ";200));200))
Ostatnio edytowano Śr gru 18, 2019 2:34 pm przez Jan_J, łącznie edytowano 1 raz
Powód: Proszę o usunięcie reklamy z podpisu
Mam OpenOffice 3.1 na Windows Vista a w wolnym czasie gram w Painball na polu painballowym: https://arenamocy.pl/
martarak
 
Posty: 3
Dołączył(a): Śr gru 18, 2019 12:36 am


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 1 gość