Det sista ordet

Ett enkelt, vid första anblicken, problem med en icke-uppenbar lösning: extrahera det sista ordet från en textrad. Tja, eller, i det allmänna fallet, det sista fragmentet, separerat av ett givet avgränsningstecken (mellanslag, komma, etc.) Med andra ord är det nödvändigt att implementera en omvänd sökning (från slutet till början) i strängen av en ett givet tecken och extrahera sedan alla tecken till höger om det.

Låt oss titta på de traditionellt många sätten att välja mellan: formler, makron och genom Power Query.

Metod 1. Formler

För att göra det lättare att förstå essensen och mekaniken i formeln, låt oss börja lite på avstånd. Låt oss först öka antalet mellanslag mellan ord i vår källtext till till exempel 20 stycken. Du kan göra detta med ersätt-funktionen. ERSÄTTNING (ERSÄTTNING) och funktionen att upprepa ett givet tecken N gånger – UPPREPA (REPT):

Det sista ordet

Nu skär vi bort 20 tecken från slutet av den resulterande texten med hjälp av funktionen RÄTT (RÄTT):

Det sista ordet

Det blir varmare, eller hur? Det återstår att ta bort extra mellanslag med funktionen TRIM (TRIM) och problemet kommer att lösas:

Det sista ordet

I den engelska versionen kommer vår formel att se ut så här:

=TRIMMA(HÖGER(ERSÄTTA(A1;» «;REPT(» «;20));20))

Jag hoppas att det är tydligt att det i princip inte är nödvändigt att infoga exakt 20 mellanslag – vilket antal som helst duger, så länge det är mer än längden på det längsta ordet i källtexten.

Och om källtexten inte behöver delas med ett mellanslag, utan med ett annat separatortecken (till exempel med kommatecken), måste vår formel korrigeras något:

Det sista ordet

Metod 2. Makrofunktion

Uppgiften att extrahera det sista ordet eller fragmentet från texten kan också lösas med hjälp av makron, nämligen att skriva en omvänd sökfunktion i Visual Basic som ska göra det vi behöver – söka efter en given delsträng i en sträng i motsatt riktning – från slutet till början.

Tryck på kortkommandot andra+F11 eller knapp Visual Basic fliken utvecklare (Utvecklaren)för att öppna makroredigeraren. Lägg sedan till en ny modul via menyn Infoga – Modul och kopiera följande kod dit:

 Funktion LastWord(txt As String, Optional delim As String = " ", Optional n As Heltal = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) Slutfunktion  

Nu kan du spara arbetsboken (i ett makroaktiverat format!) och använda den skapade funktionen i följande syntax:

=SistaWord(txt ; delim ; n)

var

  • Text – cell med källtext
  • avgränsa — separator (standard — blanksteg)
  • n – vilket ord ska extraheras från slutet (som standard – det första från slutet)

Det sista ordet

Med eventuella ändringar i källtexten i framtiden kommer vår makrofunktion att räknas om i farten, som alla vanliga Excel-arkfunktioner.

Metod 3. Power Query

Strömfråga är ett gratis tillägg från Microsoft för att importera data till Excel från nästan vilken källa som helst och sedan omvandla den nedladdade datan till valfri form. Kraften och coolheten i detta tillägg är så stor att Microsoft har byggt in alla dess funktioner i Excel 2016 som standard. För Excel 2010-2013 kan Power Query laddas ner gratis härifrån.

Vår uppgift att separera det sista ordet eller fragmentet genom en given separator med hjälp av Power Query löses mycket enkelt.

Låt oss först förvandla vår datatabell till en smart tabell med kortkommandon. ctrl+T eller kommandon Hem – Formatera som en tabell (Hem — Formatera som tabell):

Det sista ordet

Sedan laddar vi den skapade "smarta tabellen" i Power Query med kommandot Från bord/sortiment (Från tabell/sortiment) fliken Data (om du har Excel 2016) eller på fliken Strömfråga (om du har Excel 2010-2013):

Det sista ordet

I frågeredigeringsfönstret som öppnas, på fliken Transformation (Omvandla) välja ett lag Dela kolumn – Med avgränsare (Dela kolumn – med avgränsare) och sedan återstår att ställa in separatortecknet och välja alternativet Avgränsare längst till högeratt klippa inte alla ord, utan bara det sista:

Det sista ordet

Efter att ha klickat på OK det sista ordet kommer att separeras i en ny kolumn. Den onödiga första kolumnen kan tas bort genom att högerklicka på dess rubrik och välja AVLÄGSNA (Radera). Du kan också byta namn på den återstående kolumnen i tabellrubriken.

Resultaten kan laddas upp tillbaka till arket med kommandot Hem — Stäng och ladda — Stäng och ladda till … (Hem — Stäng & Ladda — Stäng & Ladda till...):

Det sista ordet

Och som ett resultat får vi:

Det sista ordet

Så här – billigt och glatt, utan formler och makron, nästan utan att röra tangentbordet 🙂

Om den ursprungliga listan ändras i framtiden räcker det med att högerklicka eller använda ett kortkommando ctrl+andra+F5 uppdatera vår begäran.


  • Dela upp klibbig text i kolumner
  • Analysera och analysera text med reguljära uttryck
  • Extrahera de första orden ur texten med SUBSTITUTE-funktionen

Kommentera uppropet