Všeobecný vzorec
=MID(A1,FIND("@",SUBSTITUTE(A1," ","@",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))-1))+1,100)
Zhrnutie
Na extrahovanie posledných dvoch slov z bunky môžete použiť vzorec zostavený z niekoľkých funkcií programu Excel vrátane MID, FIND, SUBSTITUTE a LEN. V zobrazenom príklade je vzorec v C5:
=MID(B5,FIND("@",SUBSTITUTE(B5," ","@",LEN(B5)-LEN(SUBSTITUTE(B5," ",""))-1))+1,100)
Vysvetlenie
Tento vzorec v jadre využíva funkciu MID na extrahovanie znakov začínajúcich od druhej po poslednú medzeru. Funkcia MID vyžaduje 3 argumenty: text, s ktorým sa má pracovať, začiatočná pozícia a počet znakov, ktoré sa majú extrahovať.
Text pochádza zo stĺpca B a počet znakov môže byť ľubovoľný veľký počet, ktorý zabezpečí extrahovanie posledných dvoch slov. Výzvou je určiť východiskovú pozíciu, ktorá je tesne za druhým od posledného priestoru. Chytrá práca sa vykonáva predovšetkým pomocou funkcie SUBSTITUTE, ktorá má voliteľný argument s názvom číslo inštancie. Táto funkcia slúži na nahradenie predposlednej medzery v texte znakom „@“, ktorý je potom umiestnený pomocou funkcie FIND.
Pri úryvku zvnútra dole uvedený úryvok zisťuje, koľko medzery je v celkovom texte, od ktorého sa odpočíta 1.
LEN(B5)-LEN(SUBSTITUTE(B5," ",""))-1
V zobrazenom príklade je v texte 5 medzier, takže vyššie uvedený kód vráti 4. Toto číslo je vložené do vonkajšej funkcie SUBSTITUTE ako číslo inštancie:
SUBSTITUTE(B5," ","@",4)
To spôsobí, že SUBSTITUTE nahradí štvrtý znak medzery znakom „@“. Voľba @ je ľubovoľná. Môžete použiť ľubovoľný znak, ktorý sa v pôvodnom texte neobjaví.
Ďalej NÁJDETE v texte vyhľadá znak „@“:
FIND("@","A stitch in time@saves nine")
Výsledok funkcie FIND je 17, ku ktorej sa pripočíta 1 k hodnote 18. Toto je východisková pozícia a ide do funkcie MID ako druhý argument. Pre jednoduchosť je počet znakov na extrahovanie napevno nastavený na 100. Tento počet je ľubovoľný a je možné ho upraviť tak, aby zodpovedal situácii.
Extrahuje posledných N slov z bunky
Tento vzorec je možné zovšeobecniť na extrahovanie posledných N slov z bunky nahradením pevne zakódovanej 1 v príklade výrazom (N-1). Ak navyše extrahujete veľa slov, možno budete chcieť nahradiť pevne zakódovaný argument v MID, 100, väčším počtom. Aby ste sa ubezpečili, že je číslo dostatočne veľké, môžete jednoducho použiť funkciu LEN nasledovne:
=MID(B5,FIND("@",SUBSTITUTE(B5," ","@",LEN(B5)-LEN(SUBSTITUTE(B5," ",""))-(N-1)))+1,LEN(B5))