Vind de positie van het laatste voorkomen van een teken in Excel

In deze zelfstudie leert u hoe u de positie van het laatste voorkomen van een teken in een tekenreeks in Excel kunt vinden.

Een paar dagen geleden kwam een ​​collega met dit probleem.

Hij had een lijst met URL's zoals hieronder weergegeven, en hij moest alle tekens na de laatste schuine streep ("/") extraheren.

Dus bijvoorbeeld van https://example.com/archive/Januari hij moest ‘januari’ eruit halen.

Het zou heel gemakkelijk zijn geweest als er maar één schuine streep naar voren was in de URL's.

Wat hij had was een enorme lijst van duizenden op URL's van verschillende lengte en een wisselend aantal forward-slashes.

In dergelijke gevallen is het de kunst om de positie van de laatste slash in de URL te vinden.

In deze tutorial laat ik je twee manieren zien om dit te doen:

  • Een Excel-formule gebruiken
  • Een aangepaste functie gebruiken (gemaakt via VBA)

De laatste positie van een teken verkrijgen met behulp van de Excel-formule

Als je de positie van de laatste keer hebt, kun je met de RECHTS-functie eenvoudig alles aan de rechterkant ervan extraheren.

Hier is de formule die de laatste positie van een schuine streep zou vinden en alle tekst rechts ervan zou extraheren.

=RIGHT(A2,LENGTE(A2)-FIND("@",VERVANG(A2,"/","@",LEN(A2)-LENGTE(VERVANG(A2,"/",""))),1 )) 

Hoe werkt deze formule?

Laten we de formule opsplitsen en uitleggen hoe elk onderdeel ervan werkt.

  • VERVANG(A2,”/”,“”) - Dit deel van de formule vervangt de schuine streep door een lege tekenreeks. Dus als u bijvoorbeeld het voorkomen van een andere tekenreeks dan de slash wilt vinden, gebruik die dan hier.
  • LEN(A2)-LEN(VERVANG(A2,”/”,“”)) - Dit deel zou je vertellen hoeveel schuine strepen er in de string zitten. Het trekt eenvoudig de lengte van de snaar af zonder de schuine streep naar voren van de lengte van de snaar met schuine strepen.
  • VERVANG(A2,”/”,”@”,LEN(A2)-LEN(VERVANG(A2,”/”,””))) - Dit deel van de formule zou de laatste slash vervangen door @. Het idee is om dat personage uniek te maken. Je kunt elk willekeurig teken gebruiken. Zorg ervoor dat het uniek is en niet al in de tekenreeks voorkomt.
  • FIND(“@”,VERVANG(A2,”/”,”@”,LEN(A2)-LEN(VERVANG(A2,”/”,””))),1) - Dit deel van de formule geeft u de positie van de laatste schuine streep.
  • LEN(A2)-FIND(“@”,VERVANG(A2,”/”,”@”,LEN(A2)-LEN(VERVANG(A2,”/”,””))),1) - Dit deel van de formule zou ons vertellen hoeveel tekens er zijn na de laatste schuine streep.
  • =RIGHT(A2,LEN(A2)-FIND(“@”,VERVANG(A2,”/”,”@”,LEN(A2)-LEN(VERVANG(A2,”/”,””))),1 )) - Dit zou ons gewoon de string geven na de laatste schuine streep.

De laatste positie van een personage verkrijgen met behulp van Custom Function (VBA)

Hoewel de bovenstaande formule geweldig is en werkt als een charme, is het een beetje ingewikkeld.

Als u vertrouwd bent met het gebruik van VBA, kunt u een aangepaste functie gebruiken (ook wel een door de gebruiker gedefinieerde functie genoemd) die via VBA is gemaakt. Dit kan de formule vereenvoudigen en tijd besparen als u dit vaak moet doen.

Laten we dezelfde dataset van URL's gebruiken (zoals hieronder weergegeven):

Voor dit geval heb ik een functie gemaakt met de naam LastPosition, die de laatste positie van het opgegeven teken vindt (wat in dit geval een schuine streep is).

Hier is de formule die dit zal doen:

=RECHTS(A2,LEN(A2)-Laatste Positie(A2,"/")+1)

Je kunt zien dat dit een stuk eenvoudiger is dan degene die we hierboven hebben gebruikt.

Hier is hoe dit werkt:

  • LastPosition - wat onze aangepaste functie is - retourneert de positie van de schuine streep. Deze functie heeft twee argumenten: de celverwijzing met de URL en het teken waarvan we de positie moeten vinden.
  • De functie RECHTS geeft ons dan alle tekens na de schuine streep.

Hier is de VBA-code die deze functie heeft gemaakt:

Functie LastPosition(rCell As Range, rChar As String) 'Deze functie geeft de laatste positie van het opgegeven teken 'Deze code is ontwikkeld door Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len(rCell) Voor i = rLen Naar 1 Stap -1 If Mid(rCell, i - 1, 1) = rChar Dan LastPosition = i Functie verlaten End If Next i Functie beëindigen

Om deze functie te laten werken, moet u deze in de VB Editor plaatsen. Als u klaar bent, kunt u deze functie gebruiken zoals elke andere normale Excel-functie.

Hier zijn de stappen om deze code in de VB-back-end te kopiëren en te plakken:

Hier zijn de stappen om deze code in de VB Editor te plaatsen:

  1. Ga naar het tabblad Ontwikkelaars.
  2. Klik op de Visual Basic-optie. Dit opent de VB-editor in de backend.
  3. Klik in het deelvenster Projectverkenner in de VB-editor met de rechtermuisknop op een object voor de werkmap waarin u de code wilt invoegen. Als u de Projectverkenner niet ziet, gaat u naar het tabblad Weergave en klikt u op Projectverkenner.
  4. Ga naar Invoegen en klik op Module. Hiermee wordt een moduleobject voor uw werkmap ingevoegd.
  5. Kopieer en plak de code in het modulevenster.

Nu zou de formule beschikbaar zijn in alle werkbladen van de werkmap.

Houd er rekening mee dat u de werkmap moet opslaan als de .XLSM-indeling, omdat deze een macro bevat. Als u wilt dat deze formule beschikbaar is in alle werkmappen die u gebruikt, kunt u deze ook opslaan in de persoonlijke macrowerkmap of er een invoegtoepassing van maken.

Misschien vind je de volgende Excel-zelfstudies misschien ook leuk:

  • Hoe het aantal woorden in Excel te krijgen
  • VERT.ZOEKEN gebruiken met meerdere criteria.
  • Vind het laatste voorkomen van een opzoekwaarde in een lijst in Excel.
  • Extraheer de subtekenreeks in Excel.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave