Ostatni wyraz w zdaniu

by Marcin

Ostatni wyraz w zdaniu

Zadanie wygląda następująco.

Mam całą serię ciągów tekstowych zbudowanych w następujący sposób: „To jest opis, a mnie interesuje tylko kod XP342OO”, z których muszę pobrać tylko kod produktu, w tym przypadku „XP342OO”. W praktyce zadanie sprowadza się do wybrania ostatniego wyrazu w zdaniu, a gdyby ktoś chciał opisać to nieco bardziej szczegółowo, pobraniu wszystkich znaków znajdujących się na prawo od ostatniej spacji w zdaniu.

Przy założeniu, że ciąg tekstowy masz w komórce D3, odpowiednia formuła mogłaby wyglądać następująco:

=PRAWY(D3;DŁ(D3)-SZUKAJ.TEKST(„^”;PODSTAW(D3;” „;”^”;DŁ(D3)-DŁ(PODSTAW(D3;” „;””)))))

Jak zwykle kilka słów wyjaśnienia.

PODSTAW(D3;” „;”^”;DŁ(D3)-DŁ(PODSTAW(D3;” „;””)))

Ten fragment zastępuje ostatnią spację w zdaniu symbolem „^” (może to być oczywiście dowolny „dziwny” symbol. Chodzi o to, aby nie było szansy jego wystąpienia w innym miejscu w Twoim tekście.).

Znajdując pozycję, na której pojawi się ten symbol – SZUKAJ.TEKST(„^”;PODSTAW(D3;” „;”^”;DŁ(D3)-DŁ(PODSTAW(D3;” „;””)))) – określisz pozycję ostatniej spacji w zdaniu. Reszta to pobranie wszystkich znaków na prawo od tej spacji. Wynik działania na rysunku poniżej.

Ostatni wyraz w zdaniu

Bazując na tej samej zasadzie, rezultat osiągniesz także korzystając z funkcji FRAGMENT.TEKSTU.

=FRAGMENT.TEKSTU(D3;SZUKAJ.TEKST(„^”;PODSTAW(D3;” „;”^”;DŁ(D3)-DŁ(PODSTAW(D3;” „;””))))+1;255)

Jeżeli masz inne pomysły – czekam jak zwykle na komentarz.

Download

{ 10 comments… read them below or add one }

Lukasz

Bardzo przydatna formula ale czy dalo by sie ja przerobic na zwrocenie przedostatniego wyrazu z zdania nr. „To jest opis przedmiotu i liczba szt” chodzi mi o to aby moc wyciagnac z opisu liczbe szt towaru?

Marcin

Pewnie, że by się dało przerobić. Być może kiedyś, w wolnej chwili,powrócę do tego tematu.

Marcin

armal84

Może przyda siekomuś w VBA:

Sub OstatniWyrazWZdaniu()
Dim i, j As Integer
dl = Len(Cells(10, „A”))
a = 1

On Error GoTo errhandler:

Do Until a > dl

a = Application.WorksheetFunction.Find(” „, Cells(10, „A”), a + 1)

Loop

Exit Sub
errhandler:
Cells(10, „B”) = Right(Cells(10, „A”), dl – a)
Exit Sub

End Sub

Pozdrawiam.

armal84

Łukasz:

Kod VBA zwracający przedostatni wyraz w zdaniu (obsługuje zdania, w których pojawiają się wielokrotne spacje):

Sub UsunPodwojneSpacje()
Range(„A10”) = Range(„A9”)
i = 0
Do Until i = Len(Range(„A10”))
i = i + 1
Range(„A10”) = Application.WorksheetFunction.Substitute(Range(„A10″), ” „, ” „)
Loop

End Sub

Sub PrzedostatniWyraz()
Dim i, j As Integer
Dim tb(1 To 10) As Variant

Call UsunPodwojneSpacje

dl = Len(Cells(10, „A”))
a = 1
i = 1

Set spacja = Range(„A10″).Find(” „)

If spacja Is Nothing Then
Range(„B10”) = Range(„A10″)
Exit Sub
End If

On Error GoTo errhandler:

Do Until a > dl

a = Application.WorksheetFunction.Find(” „, Cells(10, „A”), a + 1)
tb(i) = a
i = i + 1

Loop

Exit Sub
errhandler:

‚For j = 1 To i
‚Cells(j+9,”B”) = mid(Range(„A10”),tb(i),

Range(„B9”) = Mid(Range(„A10”), tb(i – 2) + 1, tb(i – 1) – tb(i – 2) – 1)
Range(„A10”).Clear

Exit Sub

End Sub

Marcin

@armal84

Wielkie dzieki za kawałki kodu, które wstawiasz tu i ówdzie. Pewien jestem, że się wielu osobom przydadzą.

Marcin

R4V

Hej potrzebuje z tego ciągu cyfr f025797110000 wyodrębnić tylko 25797 – czyli 5 cyfr poprzedzonych f0 jednak bez „25” i ostatnich 6 cyfr. Mam tego w kolumnie >18 tysięcy. Czy takie cos jest za trudne na tego bloga czy da rade coś takiego zrobić?

Pozdrawiam

R4V

W zasadzie pogrzebalem i znalazlem tylko za nic w sweicei nie moge wygooglowac jak do diaska umiesci w jednej komorce dwie formuly =prawy i =lewy. Wpisalem prawy ucina mi pierwsze znaki w kodzie natomiast nei wiem jakim znacznikiem oddzielic te formułe i dopisać =lewy.

Pozdrawiam

Wojt

Genialne w swej prostocie!
Głowię się nad podobnym przypadkiem już dosyć długo – musiałem „odciąć” numery domów z ulic gdzie jedyne co jest pewne, to że na końcu jest numer. Dzięki! Muszę tu bywać częściej 🙂

Joanna

Trafiłam na stronę szukając opcji wycinania ostatnich kilku cyfr/liter wpisanych w komórce.
Przykład wykorzystania: kod produktu w firmie jest obdarzony symbolem składającym się z ciągu cyfr i kodu kraju pochodzenia (2838721PL). W kolejnej kolumnie potrzebujemy wypisać kraj pochodzenia produktu aby potem dzięki tej kolumnie przefiltrować i wynaleźć wszystkie produkty pochodzące np z Chin.

Adam

Szukałem sposobu na wyciągnięcie nazwy pliku z pola gdzie zapisana jest nazwa pliku z pełną ścieżką. Wielkie dzięki za ten wpis, zmodyfikowałem swoją formułę (zamiast szukania spacji jest szukanie „\”) i problem mam rozwiązany. Wprawdzie na początku nie mogłem zrozumieć działania tej formuły ale w końcu załapałem. Wielkie dzięki.

Leave a Comment

Previous post:

Next post: