Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 991
  • Last Modified:

VBA: position of substring in a comma-delimited string

Hi X-perts,

I have a comma delimited string like

mystring = "(number1,number2,number3, number4)

or (2343, 7765, 9928, 3354)

I need a function that returns a relative position of a given number inside that string, i.e.

myFunction(mystring, mynumber)

myFunction(mystring, 2343) = 1

etc.

what is the simplest way of doing this? In php it would take just two lines of code with explode/implode, but I am not sure what is the closest option in VBA.

Please, advise..... it needs to be a very short solution

Thanks
0
andy7789
Asked:
andy7789
2 Solutions
 
DhaestCommented:
Easiest way, with the help of split-function
Sub test()
    MsgBox GetPosition("(2343, 7765, 9928, 3354)", "7765")
End Sub
 
Public Function GetPosition(inString As String, searchString As String) As Integer
    Dim strSplit() As String
    GetPosition = -1
    
    ' removing ( and )
    inString = Replace(inString, "(", "")
    inString = Replace(inString, ")", "")
    strSplit = split(inString, ",")
    For i = 0 To UBound(strSplit)
        If Trim(strSplit(i)) = searchString Then
            GetPosition = i + 1
        End If
    Next i
    
End Function

Open in new window

0
 
Wayne Taylor (webtubbs)Commented:
If you are using VBA within Excel, you can use the below function, which also shows usage.

Wayne
Sub test()
 
     Dim mystring As String
     mystring = "(2343, 7765, 9928, 3354)"
 
     MsgBox IndexOf(mystring, "9928") 'will return 3
 
End Sub
 
Public Function IndexOf(strArray As String, item As String) As Integer
 
     Dim arr() As String
     arr = Split(Replace(Replace(Replace(strArray, "(", ""), ")", ""), " ", ""), ",")
 
     Dim v As Variant
     v = Application.Match(item, Application.Transpose(arr), 0)
     If IsError(v) Then
          IndexOf = -1
     Else
          IndexOf = v
     End If
 
End Function

Open in new window

0
 
andy7789Author Commented:
Thank you
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now