Kurs excel - Płatny kurs excela | Exceliadam

Jak wyciągnąć tekst pomiędzy ostatnim a przedostatnim backslashem — widzowie #104

Szef zlecił Ci zadanie (może ma na imię Robert ;)), żeby wyciągnąć tekst, który się znajduje pomiędzy przedostatnim, a ostatnim backslashem (\). To zadanie wymaga trochę pracy. Żeby było łatwiejsze podzielimy je sobie na trzy części. Najpierw znajdziemy pozycję przedostatniego i ostatniego backslasha, a potem już łatwo wyciągniemy tekst pomiędzy nimi.
Żeby odnaleźć pozycję przedostatniego i ostatniego backslasha najpierw będziemy potrzebować policzyć ile ich jest. Zrobimy to podmieniając wszystkie backslashe w tekście na pusty ciąg tekstowy, czyli po prostu usuniemy je. To uzyskamy za pomocą funkcji PODSTAW:

=PODSTAW(A2;"\";"")

Kolejnym krokiem będzie obliczenie długości tekstu/ścieżki, po usunięciu backslashy, to da nam funkcja , a żeby uzyskać liczbę backslashy potrzebujemy odjąć tą długość od faktycznej długości tekstu:

=(A2)-DŁ(PODSTAW(A2;"\";""))


Założyliśmy sobie, że najpierw odszukamy pozycję przedostatniego backslasha, więc musimy tu jeszcze odjąć jedynkę. Teraz możemy, ten konkretny numer znaku zastąpić takim ciągiem tekstowym, który na pewno nie powtórzy się w przeszukiwanym tekście np.: #@, to znów będzie funkcja PODSTAW:

=PODSTAW(A2;"\";"#@";(A2)-DŁ(PODSTAW(A2;"\";""))-1)

Teraz wystarczy, że odnajdziesz pozycję tego nietypowego ciągu znaków (funkcja ZNAJDŹ) i masz pozycję przedostatniego backslasha:

=ZNAJDŹ("#@";PODSTAW(A2;"\";"#@";(A2)-DŁ(PODSTAW(A2;"\";""))-1))


Pozycję ostatniego znaku odnajdziesz po prostu nie odejmując jedynki:

=ZNAJDŹ("#@";PODSTAW(A2;"\";"#@";(A2)-DŁ(PODSTAW(A2;"\";""))))


Teraz jak mamy już pozycję ostatniego i przedostatniego znaku to łatwo wyciągnąć to co jest pomiędzy nimi za pomocą funkcji FRAGMENT.TEKSTU. Trzeba tylko pamiętać dodać i odjąć jeden, żeby nie wyciągnąć również backslashy:

=FRAGMENT.TEKSTU(A2;C2+1;D2-C2‑1)

Pozdrawiam
Adam Kopeć
Miłośnik Excela

Exit mobile version