Pozícia x-tého výskytu znaku alebo reťazca

Hodnotenie

Pán David mi poslal nasledovné zadanie:

Dobrý den, mám dotaz. Potřebuji zkrátit text na maximálně 550 znaků (včetně mezer), ale musí to končit tečkou za celou větou. To znamená, že to nebude vždy 550 znaků, ale méně dle ukončení věty s tečkou. Moooc děkuji za pomoc. Je to kvůli zkrácení textů do e-shop (description (to mám) a short description).

Ja spravím príklad na maximálne 12 znakov, nie na 550. Krajšie sa mi to zmestí do obrázkov 🙂

1. Potrebujeme texty s vetami, ktoré budeme skracovať. My použijeme takéto symbolické vety.

Text na skrátenie

2. Necháme prvých 12 znakov, použijeme na to funkciu LEFT().

Prvých 12 znakov

3. Zistíme, koľko bodiek sa nachádza v skrátenom reťazci. To spravíme pomocou postupu uvedeného v článku Ako zistíme, koľko krát sa nachádza znak v bunke.

Koľko krát je bodka

4. Potrebujeme zistiť pozíciu poslednej bodky. Na to nám poslúži funkcia, ktorú si sami naprogramujeme. Ja som funkciu nazval PoziciaXtehoVyskytu(). Na konci tohto článku si môžete funkciu PoziciaXtehoVyskytu() stiahnuť aj ako dopnok.

Function PoziciaXtehoVyskytu(CoHladam As String, KdeHladam As String, KtoryVyskyt As Integer) As Integer
Application.Volatile
Dim i As Integer
PoziciaXtehoVyskytu = 0
For i = 1 To KtoryVyskyt
PoziciaXtehoVyskytu = InStr(PoziciaXtehoVyskytu + 1, KdeHladam, CoHladam)
If PoziciaXtehoVyskytu = 0 Then Exit For
Next i
End Function

Pozícia xtého výskytu

5. Keď už poznáme na ktorej pozícii od začiatku, čiže zľava, sa vyskytuje pozícia poslednej medzery, tak stačí od začiatku „odrezať“ taký počet znakov. Opäť teda použijeme funkciu LEFT().

Po poslednú bodku

6. Nakoniec prekopírujeme výsledok funkcie PoziciaXtehoVyskytu() buď na to isté alebo aj iné miesto ako hodnoty a je to.

Funkciu PoziciaXtehoVyskytu() si môžete stiahnuť aj ako doplnok pre MS Excel TU.

Komentáre
Hodnotenie

Jeden komentár pre “Pozícia x-tého výskytu znaku alebo reťazca

Komentáre nie sú povolené.