VBA – Find the nth Word in a String of Text

In this Article


    Return nth Word in String of Text

    The following function will find the nth word in a string:

    Function Find_nth_word(Phrase As String, n As Integer) As String
    Dim Current_Pos As Long
    Dim Length_of_String As Integer
    Dim Current_Word_No As Integer
    
    Find_nth_word = ""
    Current_Word_No = 1
    
    'Remove Leading Spaces
    Phrase = Trim(Phrase)
    
    Length_of_String = Len(Phrase)
    
    For Current_Pos = 1 To Length_of_String
        If (Current_Word_No = n) Then
            Find_nth_word = Find_nth_word & Mid(Phrase, Current_Pos, 1)
        End If
    
        If (Mid(Phrase, Current_Pos, 1) = " ") Then
         Current_Word_No = Current_Word_No + 1
        End If
    Next Current_Pos
    
    'Remove the rightmost space
    Find_nth_word = Trim(Find_nth_word)
    
    End Function

    It needs two arguments – the phrase that is to be searched and the word number:

    Find_nth_word(“Automateexcel ls the worlds favourite Excel site”,4)

    Will return “world”.

    A blank is returned if the number of words in the phrase is less than the word number specified.

    So: Find_nth_word(“Automateexcel ls the worlds favourite Excel site”,12)
    Will return blank as there are not 12 words in the phrase “Automateexcel ls the worlds favourite Excel site”.