Hitta position för den sista förekomsten av ett tecken i Excel

I den här självstudien lär du dig hur du hittar positionen för den sista förekomsten av ett tecken i en sträng i Excel.

För några dagar sedan kom en kollega med detta problem.

Han hade en lista med webbadresser enligt nedan, och han behövde extrahera alla tecken efter det sista snedstrecket ("/").

Så till exempel från https://exempel.com/arkiv/Januari han var tvungen att extrahera "januari".

Det hade varit riktigt enkelt har det bara funnits ett snedstreck i URL: erna.

Vad han hade var en enorm lista med tusentals på webbadresser av varierande längd och ett varierande antal framåtstreck.

I sådana fall är tricket att hitta positionen för den sista förekomsten av framåtstrecket i URL: en.

I den här självstudien visar jag dig två sätt att göra detta:

  • Med hjälp av en Excel -formel
  • Använda en anpassad funktion (skapad via VBA)

Få den sista positionen för ett tecken med hjälp av Excel Formula

När du har den senaste förekomstens position kan du helt enkelt extrahera allt till höger om den med hjälp av HÖGER -funktionen.

Här är formeln som skulle hitta den sista positionen för ett snedstreck och extrahera all text till höger om den.

= HÖGER (A2, LEN (A2) -FIND ("@", SUBSTITUTE (A2, "/", "@", LEN (A2) -LEN (SUBSTITUTE (A2, "/", "")))), 1 ))) 

Hur fungerar denna formel?

Låt oss bryta ner formeln och förklara hur varje del av den fungerar.

  • BYTARE (A2, ”/”,“”) - Denna del av formeln ersätter snedstrecket med en tom sträng. Så till exempel, om du vill hitta förekomsten av någon annan sträng än framåtstrecket, använd det här.
  • LEN (A2) -LEN (ERSÄTTNING (A2, ”/”,“”)) - Den här delen skulle berätta hur många snedstreck det finns i strängen. Det subtraherar helt enkelt strängens längd utan snedstrecket från strängens längd med snedstreck.
  • BYTE (A2, ”/”, ”@”, LEN (A2) -LEN (ERSÄTTNING (A2, ”/”, ””))) - Denna del av formeln skulle ersätta det sista snedstrecket med @. Tanken är att göra den karaktären unik. Du kan använda vilken karaktär du vill. Se bara till att den är unik och inte redan visas i strängen.
  • HITTA (“@”, SUBSTITUTE (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUTE (A2, ”/”, ””))), 1) - Denna del av formeln skulle ge dig positionen för det sista snedstrecket.
  • LEN (A2) -FIND (“@”, SUBSTITUTE (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUTE (A2, ”/”, ””)))), 1) - Den här delen av formeln skulle berätta hur många tecken det finns efter det sista snedstrecket.
  • = HÖGER (A2, LEN (A2) -FIND (“@”, ERSÄTTNING (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUTE (A2, ”/”, ””)))), 1 ))) - Nu skulle det här helt enkelt ge oss strängen efter det sista snedstrecket.

Få den sista positionen för ett tecken med hjälp av anpassad funktion (VBA)

Även om ovanstående formel är bra och fungerar som en charm, är det lite komplicerat.

Om du känner dig bekväm med VBA kan du använda en anpassad funktion (även kallad en användardefinierad funktion) som skapats via VBA. Detta kan förenkla formeln och kan spara tid om du måste göra detta ofta.

Låt oss använda samma datauppsättning av webbadresser (som visas nedan):

För det här fallet har jag skapat en funktion som heter LastPosition, som hittar den sista positionen för det angivna tecknet (vilket är ett snedstreck i detta fall).

Här är formeln som gör detta:

= HÖGER (A2, LEN (A2) -LastPosition (A2, "/")+1)

Du kan se att det här är mycket enklare än det vi använde ovan.

Så här fungerar det:

  • LastPosition - som är vår anpassade funktion - returnerar positionen för snedstrecket. Denna funktion tar två argument - cellreferensen som har URL: en och det tecken vars position vi behöver hitta.
  • RIGHT -funktionen ger oss sedan alla tecken efter snedstrecket.

Här är VBA -koden som skapade den här funktionen:

Funktion LastPosition (rCell As Range, rChar As String) 'Denna funktion ger den sista positionen för det angivna tecknet' Denna kod har utvecklats av Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len (rCell) För i = rLen Till 1 Steg -1 Om Mitt (rCell, i - 1, 1) = rChar Sedan LastPosition = i Avsluta funktion Avsluta Om Nästa i Avsluta funktion

För att få denna funktion att fungera måste du placera den i VB Editor. När du är klar kan du använda den här funktionen som alla andra vanliga Excel -funktioner.

Här är stegen för att kopiera och klistra in den här koden i VB-backend:

Här är stegen för att placera denna kod i VB Editor:

  1. Gå till fliken Utvecklare.
  2. Klicka på alternativet Visual Basic. Detta öppnar VB -redigeraren i backend.
  3. I fönstret Projektutforskare i VB-redigeraren högerklickar du på valfritt objekt för arbetsboken där du vill infoga koden. Om du inte ser Project Explorer går du till fliken View och klickar på Project Explorer.
  4. Gå till Infoga och klicka på Modul. Detta kommer att infoga ett modulobjekt för din arbetsbok.
  5. Kopiera och klistra in koden i modulfönstret.

Nu skulle formeln vara tillgänglig i alla arbetsblad i arbetsboken.

Observera att du måste spara arbetsboken som .XLSM -format eftersom den har ett makro. Om du vill att den här formeln ska vara tillgänglig i alla arbetsböcker du använder kan du antingen spara den personliga makroarbetsboken eller skapa ett tillägg från den.

Du kanske också gillar följande Excel -självstudier:

  • Hur man får ordräkningen i Excel.
  • Hur man använder VLOOKUP med flera kriterier.
  • Hitta den sista förekomsten av ett uppslagsvärde en lista i Excel.
  • Extract Substring in Excel.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave