Die laaste woord

'n Eenvoudige, met die eerste oogopslag, probleem met 'n nie-vanselfsprekende oplossing: onttrek die laaste woord uit 'n teksreël. Wel, of, in die algemene geval, die laaste fragment, geskei deur 'n gegewe skeidingsteken (spasie, komma, ens.) Met ander woorde, dit is nodig om 'n omgekeerde soektog (van einde tot begin) in die string van 'n gegewe karakter en trek dan al die karakters regs daarvan uit.

Kom ons kyk na die tradisioneel verskeie maniere om van te kies: formules, makro's en deur Power Query.

Metode 1. Formules

Om dit makliker te maak om die essensie en meganika van die formule te verstaan, kom ons begin 'n bietjie van ver af. Kom ons vermeerder eers die aantal spasies tussen woorde in ons bronteks tot byvoorbeeld 20 stukke. Jy kan dit doen met die vervangingsfunksie. PLAASVERVANGER (PLAASVERVANG) en die funksie om 'n gegewe karakter N-keer te herhaal – REPEAT (REPT):

Die laaste woord

Nou sny ons 20 karakters van die einde van die gevolglike teks af met behulp van die funksie REGS (Regs):

Die laaste woord

Dit word warmer, reg? Dit bly om ekstra spasies te verwyder met die funksie TRIM (TRIM) en die probleem sal opgelos word:

Die laaste woord

In die Engelse weergawe sal ons formule soos volg lyk:

=TRIM(REGS(PLAASVERVANGER(A1;» «;REPT(» «;20));20))

Ek hoop dit is duidelik dat dit in beginsel nie nodig is om presies 20 spasies in te voeg nie – enige getal sal deug, solank dit meer is as die lengte van die langste woord in die bronteks.

En as die bronteks nie deur 'n spasie gedeel moet word nie, maar deur 'n ander skeidingskarakter (byvoorbeeld deur 'n komma), dan sal ons formule effens reggestel moet word:

Die laaste woord

Metode 2. Makrofunksie

Die taak om die laaste woord of fragment uit die teks te onttrek kan ook opgelos word met behulp van makros, naamlik die skryf van 'n omgekeerde soekfunksie in Visual Basic wat sal doen wat ons nodig het - soek vir 'n gegewe substring in 'n string in die teenoorgestelde rigting - vanaf die einde tot die begin.

Druk die kortpad kortpad alt+F11 of knoppie Visual Basic tab ontwikkelaar (Ontwikkelaar)om die makroredigeerder oop te maak. Voeg dan 'n nuwe module by via die spyskaart Voeg in – Module en kopieer die volgende kode daarheen:

 Funksie LastWord(txt As String, Optional delim As String = " ", Opsioneel n As Heelgetal = 1) As String arFragments = Split(txt, delim) LastWord = arFragments(UBound(arFragments) - n + 1) Eindfunksie  

Nou kan jy die werkboek stoor (in 'n makro-geaktiveerde formaat!) en die geskepde funksie in die volgende sintaksis gebruik:

=LaasteWoord(txt ; delim ; n)

waar

  • txt – sel met bronteks
  • afgrens - skei karakter (verstek - spasie)
  • n - watter woord moet uit die einde onttrek word (by verstek - die eerste van die einde)

Die laaste woord

Met enige veranderinge in die bronteks in die toekoms, sal ons makrofunksie dadelik herbereken word, soos enige standaard Excel-bladfunksie.

Metode 3. Kragnavraag

Kragnavraag is 'n gratis byvoeging van Microsoft vir die invoer van data in Excel vanaf byna enige bron en dan die afgelaaide data omskep in enige vorm. Die krag en koelte van hierdie byvoeging is so groot dat Microsoft al sy kenmerke by verstek in Excel 2016 ingebou het. Vir Excel 2010-2013 kan Power Query gratis van hier afgelaai word.

Ons taak om die laaste woord of fragment te skei deur 'n gegewe skeier met behulp van Power Query word baie maklik opgelos.

Kom ons verander eers ons datatabel in 'n slim tabel deur sleutelbordkortpaaie te gebruik. Ctrl+T of opdragte Tuis – Formateer as 'n tabel (Tuis — Formateer as tabel):

Die laaste woord

Dan laai ons die geskepte "slim tabel" in Power Query met behulp van die opdrag Van tafel/reeks (Vanaf tabel/reeks) tab data (as jy Excel 2016 het) of op die blad Kragnavraag (as jy Excel 2010-2013 het):

Die laaste woord

In die navraagredigeerdervenster wat oopmaak, op die blad Transformasie (Transformeer) kies 'n span Verdeel kolom – volgens skeiding (Verdeel kolom – Deur afbakening) en dan bly dit oor om die skeidingskarakter te stel en die opsie te kies Die regterkantste skeidslynom nie alle woorde te sny nie, maar slegs die laaste een:

Die laaste woord

Na kliek op OK die laaste woord sal in 'n nuwe kolom geskei word. Die onnodige eerste kolom kan verwyder word deur regs te klik op sy kopskrif en te kies Verwyder (Vee uit). U kan ook die oorblywende kolom in die tabelopskrif hernoem.

Die resultate kan teruggelaai word na die blad met behulp van die opdrag Tuis — Maak toe en laai — Maak toe en laai na … (Tuis — Maak toe en laai — Maak toe en laai na...):

Die laaste woord

En as gevolg daarvan kry ons:

Die laaste woord

Soos hierdie – goedkoop en vrolik, sonder formules en makro's, amper sonder om aan die sleutelbord te raak 🙂

As die oorspronklike lys in die toekoms verander, sal dit genoeg wees om regs te klik of 'n sleutelbordkortpad te gebruik Ctrl+alt+F5 dateer ons versoek op.


  • Verdeel taai teks in kolomme
  • Ontleed en ontleed teks met gereelde uitdrukkings
  • Onttrek die eerste woorde uit die teks met die SUBSTITUT-funksie

Lewer Kommentaar