Wylaczenie slowa ze zdania ;]

Użytkowanie arkusza kalkulacyjnego
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: belstar »

Kod: Zaznacz cały

=USUŃ.ZBĘDNE.ODSTĘPY(PRAWY(PODSTAW(A1;" ";POWT(" ";200));200))
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: belstar »

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
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: belstar »

Np. tak:

Kod: Zaznacz cały

=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
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

i to jest jedna formula? ;]
OpenOffice 4.1.6 Windows 10
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jan_J »

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

=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 (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

=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/2 ... c35d0b0bb8'' asdhbas ahsbd ahsbd
a potrzebuje tylko link: https://a.allegroimg.com/s1440/01bbc8/2 ... c35d0b0bb8
OpenOffice 4.1.6 Windows 10
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

Rozwiązaniem będzie formuła:

Kod: Zaznacz cały

=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 pisze:<img src=''https://a.allegroimg.com/s1440/01bbc8/2 ... c35d0b0bb8'' 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.15, LO 24.8.2 (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.
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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/b ... 5870ea58e4'' srcset=''https://a.allegroimg.com/s360/01ccf7/b6 ... 5870ea58e4 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
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

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

=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.15, LO 24.8.2 (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.
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

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

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

=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.15, LO 24.8.2 (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.
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

wow dziala... wielkie dzieki :)
OpenOffice 4.1.6 Windows 10
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

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.15, LO 24.8.2 (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.
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

OK. Zmodyfikowałem funkcję i zamieściłem jej poprawioną wersję w sekcji "Projekty użytkowników"
https://forum.openoffice.org/pl/forum/v ... =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.15, LO 24.8.2 (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.
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

super, dzieki wielkie ;]
OpenOffice 4.1.6 Windows 10
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

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/v ... =28&t=5167
AOO 4.1.15, LO 24.8.2 (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.
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: Dawidek990 »

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
Awatar użytkownika
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Wylaczenie slowa ze zdania ;]

Post autor: Rafkus »

Stworzona przez @Jermora Funkcja EKSTRAKT(tekst;przed;za;separator;pierwszy;ile) to potrafi. Wpisz polecenie:

Kod: Zaznacz cały

=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

NA TEJ AUKCJI PRZEDSTAWIAMY PAŃSTWU ŁUPEK KAMIENNY NR 19 Z KAMIENIA NATURALNEGO !
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

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

=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

=PODSTAW(PODSTAW(D1;"<P>";"");"</P>";" ")
AOO 4.1.15, LO 24.8.2 (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: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wylaczenie slowa ze zdania ;]

Post autor: Jermor »

@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.15, LO 24.8.2 (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
Rafkus
Posty: 527
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Wylaczenie slowa ze zdania ;]

Post autor: Rafkus »

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

=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

=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

=EKSTRAKT(ZASTĄP(A1;1;GDZIEJEST("NA TEJ AUKCJI";A1;1)-1;"<P>");"<P>";"</P>";" ";1;3)
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
martarak
Posty: 3
Rejestracja: śr gru 18, 2019 12:36 am

Re: Wylaczenie slowa ze zdania ;]

Post autor: martarak »

Najlepie przeanalizować ten przykład:


=USUŃ.ZBĘDNE.ODSTĘPY(PRAWY(PODSTAW(A1;" ";POWT(" ";200));200))
Ostatnio zmieniony śr gru 18, 2019 2:34 pm przez Jan_J, łącznie zmieniany 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/
ODPOWIEDZ