Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 67317 Skopiuj do schowka Jak wyodrębnić fragment tekstu?
Autor Wiadomość
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 1663 razy
Posty: 5432
Wysłany: 21-02-2020, 12:49   Jak wyodrębnić fragment tekstu?

Na marginesie tego tematu nasunął mi się taki komentarz.
Funkcja FRAGMENT.TEKSTU, tak jak została zdefiniowana, jest niekompatybilna z funkcjami ZNAJDŹ i SZUKAJ.TEKST, które zwracają pozycję znalezionego znaku. Często chcemy zwrócić fragment tekstu od znaku pozycja_początkowa do znaku pozycja_końcowa. Wtedy najczęściej używamy kodu:
Kod:
=FRAGMENT.TEKSTU(tekst; pozycja_początkowa; pozycja_końcowa+1-pozycja_początkowa)

Jeśli pozycja_początkowa jest stałą lub została obliczona wcześniej i zapisana w komórce, to można używać takiego zapisu bez obaw. Jeśli jednak pozycja_początkowa wymaga obliczenia (na przykład funkcją ZNAJDŹ), to powtarzając dwa razy to samo obliczenie zmniejszamy efektywność formuły i niepotrzebnie ją wydłużamy. W takim przypadku lepiej zastosować taki zapis:
Kod:
=FRAGMENT.TEKSTU(LEWY(tekst; pozycja_końcowa); pozycja_początkowa; DŁ(tekst))

Unikamy w ten sposób dwukrotnego obliczania pozycji_początkowej, a jeśli tekst jest również obliczany, to zamiast DŁ(tekst) możemy użyć stałej o wystarczająco dużej wartości.
Inny sposób realizacji tego zadania, to wykorzystanie funkcji ZASTĄP zamiast FRAGMENT.TEKSTU:
Kod:
=ZASTĄP(LEWY(tekst; pozycja_końcowa); 1; pozycja_początkowa-1; "")

W tym przypadku również każdy argument jest obliczany jednokrotnie.
Jeszcze inny sposób proponowany ostatnio dość często przez apolla, polega na wstawieniu w odpowiednim miejscu tekstu dużej liczby spacji, a następnie odcięciu zbędnego fragmentu i usunięciu nadmiaru spacji. Przykładowy kod:
Kod:
=USUŃ.ZBĘDNE.ODSTĘPY(LEWY(PODSTAW(FRAGMENT.TEKSTU(tekst; pozycja_początkowa;100); znaki_za_końcem; POWT(" ";100));100))

Znaki_za_końcem – to pojedynczy znak lub ciąg znaków identyfikujący miejsce, które chcemy odciąć,
100 jest liczbą dobraną według uznania tak, aby wszystkie niepotrzebne znaki zostały zamaskowane. Bezpiecznie jest przyjąć maksymalną długość tekstu.
Jeśli fragment, który ma pozostać jest liczbą, nie trzeba usuwać odstępów, zamiast tego można skonwertować tekst na liczbę za pomocą podwójnej negacji.
ID posta: 382150 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe