Excel vzorec: Odstrániť posledné slovo -

Obsah

Všeobecný vzorec

=MID(A1,1,FIND("~",SUBSTITUTE(A1," ","~",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))-1)

Zhrnutie

Na odstránenie posledného slova z textového reťazca môžete použiť vzorec založený na funkcii MID s pomocou SUBSTITUTE, LEN a FIND. V zobrazenom príklade je vzorec v bunke B5:

=MID(B5,1,FIND("~",SUBSTITUTE(B5," ","~",LEN(B5)-LEN(SUBSTITUTE(B5," ",""))))-1)

Vysvetlenie

Tento vzorec využíva funkciu MID na odstránenie posledného slova z textového reťazca. Hlavnou výzvou je prísť na to, kde sa začína posledné slovo.

Vzorec je trochu komplikovaný, ale kroky sú jednoduché. Najskôr spočítame, koľko medzier v texte existuje, pomocou znakov LEN a SUBSTITUTE. Ďalej použijeme trochu nejasný argument „inštancia“ vo funkcii SUBSTITUTE, aby sme posledný priestor nahradili vlnovkou (~). Nakoniec pomocou FIND zistíme, kde je tilda, a funkciou MID vyradíme všetko, čo je po tilde.

Pri práci zvnútra narážame pomocou funkcií LEN a SUBSTITUTE na to, koľko medzier sa objaví v nasledujúcom:

LEN(B5)-LEN(SUBSTITUTE(B5," ","")) // returns 6

Pre text v B5 sa vráti 6. Táto stránka podrobnejšie vysvetľuje túto časť vzorca. Toto nám hovorí, že chceme text vystrihnúť na znak šiestej medzery.

Poznámka: Ak sú slová oddelené viac ako jednou medzerou, budete najskôr chcieť normalizovať medzery pomocou funkcie TRIM.

Číslo 6 sa potom pripojí k inému SUBSTITUTE ako „číslo inštancie“:

SUBSTITUTE(B5," ","~",6) // insert tilde

Tu nahradíme šiestu inštanciu medzery („“) vlnovkou (~). Po spustení SUBSTITUTE vráti tento reťazec:

"It's been seven hours and fifteen~days"

Poznámka: Tildu (~) používame iba preto, že sa jedná o zriedka sa vyskytujúci znak. Môžete použiť ľubovoľný znak, ktorý sa vám páči, pokiaľ sa nenachádza v zdrojovom texte.

Ďalej pomocou funkcie FIND nájdeme vlnovku:

FIND("~","It's been seven hours and fifteen~days")-1

FIND vráti hodnotu 34, pretože tilda je 34. znakom. Od tohto čísla odčítame 1, pretože do konečného výsledku nechceme zahrnúť poslednú medzeru. Teraz môžeme vzorec zjednodušiť na:

=MID(B5,1,33) // extract final text

Funkcia MID potom vráti znaky 1-33:

"It's been seven hours and fifteen"

S vlastným oddeľovačom

Rovnaký vzorec možno použiť s iným oddeľovačom. Napríklad na odstránenie všetkého textu za poslednou lomkou „/“ môžete použiť:

=MID(A1,1,FIND("~",SUBSTITUTE(A1,"/","~",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))-1)

Odstrániť posledných n slov

Vzorec môžete upraviť tak, aby ste odstránili posledné 2 slová, posledné 3 slová atď. Všeobecná forma je:

=MID(A1,1,FIND("~",SUBSTITUTE(A1,d,"~",LEN(A1)-LEN(SUBSTITUTE(A1,d,""))-(n-1)))-1)

kde d je oddeľovač a n je počet slov, ktoré sa majú odstrániť.

Zaujímavé články...