Vind de x-de voorkomst van een karakter in een text-string

Status
Niet open voor verdere reacties.

MrTinkertrain

Gebruiker
Lid geworden
4 sep 2005
Berichten
79
Wellicht is de topic-titel een beetje krom, maar ik kon zo snel geen betere omschrijving vinden :eek:
Soms komt het voor dat je bewerkingen uit wilt/moet voeren met slechts een deel van een bepaalde celwaarde.

Voorbeeld:
In cel A1 heb je het volledige pad staan naar een mp3 op je harde schijf :

b.v. :

N:\Albums Overig\Eurythmics - Touch\Eurythmics - 01 - Here Comes The Rain Again.mp3

Je wilt nu alleen de bestandsnaam hieruit destilleren.
Zoals je ziet begint die bestandsnaam na het "\"-teken direct na de directorynaam (Eurythmics - Touch)
In dit voorbeeld begint de bestandsnaam direkt na de 3e keer dat dit "\"-karakter voorkomt.

Met de volgende functie is het mogelijk om de positie van dat 3e \-teken te bepalen :

Code:
Option Compare Text 
Option Explicit 
 
Function CharPos(SearchString As String, Char As String, Instance As Long) 
     'Function purpose:  To return the position of the (first character of the )
     'nth occurance of a specific character set in a range
     
    Dim x As Integer, n As Long 
     
     'Loop through each letter in the search string
    For x = 1 To Len(SearchString) 
         'Increment the number of characters search through
        CharPos = CharPos + 1 
         
         'check if the next character(s) match the text being search for
         'and increase n if so (to count how many matches have been found
        If Mid(SearchString, x, Len(Char)) = Char Then n = n + 1 
         
         'Exit loop if instance matches number found
        If n = Instance Then Exit Function 
    Next x 
     
     'The error below will only be triggered if the function was not
     'already exited due to success
    CharPos = CVErr(xlErrValue) 
     
End Function

De syntax van deze functie is als volgt :

CHarPos.jpg


Hierbij is Searchstring de cel waarin je wilt zoeken (in dit voorbeeld dus A1)
Char is het karakter waarop je wilt zoeken (in dit geval dus het \-teken)
Instance is de zoveelste keer dat dit karakter voorkomt (in dit voorbeeld dus 3)

Als je deze functie oproept in cel B1 door in te tikken :

Code:
=CharPos(A1;"\";3)
resulteert dit in een uitkomst van 36.
Dit betekent dat de bestandsnaam begint na (totaal aantal tekens in A1) - 36 tekens.

In formule :

Code:
=RECHTS(A1;LENGTE(A1)-(CharPos(A1;"\";3)))

Ik hoop e.e.a. zo een beetje duidelijk te hebben uitgelegd.
Veel succes :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan