ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Function to return Character Position of Xth character within a string (https://www.excelbanter.com/excel-programming/331315-function-return-character-position-xth-character-within-string.html)

Andibevan[_2_]

Function to return Character Position of Xth character within a string
 
Hi All,

I have a CSV data extract that I am trying to automatically seperate using a
formula -each string contains about 10 pieces of data each seperated by a
comma

I am trying to find / build a function that can return the character
position within the string of the Xth comma - I also need to be able to
specify whether it looks for the xth comma from the front or the back of the
string.

I am currently achieving this by using multiple Mid and SEARCH functions but
the formulas end up enormous and are hard to maintain.

Any help would be really appreciated

Ta

Andi






Charlie

Function to return Character Position of Xth character within a st
 
Sounds like all you want to do is parse each string on commas. Use the Split
function. It returns a string array (zero-based) parsed using the character
you select.

Dim MyData() As String
Dim strCSV As String
Dim i As Long
Dim OneItem As String

MyData = Split(strCSV, ",")

For i = 0 To UBound(MyData)
OneItem = MyData(i)
....do whatever...
Next i



"Andibevan" wrote:

Hi All,

I have a CSV data extract that I am trying to automatically seperate using a
formula -each string contains about 10 pieces of data each seperated by a
comma

I am trying to find / build a function that can return the character
position within the string of the Xth comma - I also need to be able to
specify whether it looks for the xth comma from the front or the back of the
string.

I am currently achieving this by using multiple Mid and SEARCH functions but
the formulas end up enormous and are hard to maintain.

Any help would be really appreciated

Ta

Andi







Andibevan[_2_]

Function to return Character Position of Xth character within a st
 
Hi Charlie - Thanks for providing some advice but I don't quite understand
how your method could provide the character position of the Xth character?


"Charlie" wrote in message
...
Sounds like all you want to do is parse each string on commas. Use the
Split
function. It returns a string array (zero-based) parsed using the character
you select.

Dim MyData() As String
Dim strCSV As String
Dim i As Long
Dim OneItem As String

MyData = Split(strCSV, ",")

For i = 0 To UBound(MyData)
OneItem = MyData(i)
....do whatever...
Next i



"Andibevan" wrote:

Hi All,

I have a CSV data extract that I am trying to automatically seperate using

a
formula -each string contains about 10 pieces of data each seperated by a
comma

I am trying to find / build a function that can return the character
position within the string of the Xth comma - I also need to be able to
specify whether it looks for the xth comma from the front or the back of

the
string.

I am currently achieving this by using multiple Mid and SEARCH functions

but
the formulas end up enormous and are hard to maintain.

Any help would be really appreciated

Ta

Andi









TT[_3_]

Function to return Character Position of Xth character within a st
 
Hi,

If I understand you correctly you want to find the position of for
example the 4th comma in a string?
This function might do that:

Function iGetPosition(sInput As String, sSeparator As String, iNth As
Integer) As Integer
Dim iPos As Integer, iCnt As Integer

iPos = 0
For iCnt = 1 To iNth
iPos = InStr(iPos + 1, sInput, sSeparator)
If iPos = 0 Then
' bail out when the separator is not found
Exit For
End If
Next iCnt

iGetPosition = iPos
End Function

Sub Effe()
' we should see 18 as a result; let's cross fingers...
Debug.Print iGetPosition("aap,noot,mies,wim,zus,jet", ",", 4)
End Sub


With kind regards,
Ton Teuns

*** Sent via Developersdex http://www.developersdex.com ***

Andibevan[_2_]

Function to return Character Position of Xth character within a st
 
Thanks Ton - that does work as well.

As I had a bit of time to play with this one I have actually managed to
solve it myself by re-engineering the MyExtract function from

http://www.meadinkent.co.uk/xlextracttext.htm

Here is my code - I have also managed to get it to look from the front or
the back....

Function CountMyChar(strCSV As String, ItemNo As Integer, FrontOrBack As
String, _
MySeparator As String) As String

Dim i As Long
Dim OneItem As String
Dim n As Integer
Dim Var_CharCount As Integer
Dim Var_NumCharCount As Integer 'n'th item to find position of

Var_CharCount = 0 'current count of Item is 0

If UCase(FrontOrBack) = "F" Then
MySt = 1
MyFin = Len(strCSV)
MyStep = 1
Else
MySt = Len(strCSV)
MyFin = 1
MyStep = -1
End If

For n = MySt To MyFin Step MyStep
char = Mid(strCSV, n, 1)

If char = MySeparator Then
Var_NumCharCount = Var_NumCharCount + 1
End If

If Var_NumCharCount = ItemNo Then
Exit For
End If

Next n

CountMyChar = n

End Function


"TT" wrote in message
...
Hi,

If I understand you correctly you want to find the position of for
example the 4th comma in a string?
This function might do that:

Function iGetPosition(sInput As String, sSeparator As String, iNth As
Integer) As Integer
Dim iPos As Integer, iCnt As Integer

iPos = 0
For iCnt = 1 To iNth
iPos = InStr(iPos + 1, sInput, sSeparator)
If iPos = 0 Then
' bail out when the separator is not found
Exit For
End If
Next iCnt

iGetPosition = iPos
End Function

Sub Effe()
' we should see 18 as a result; let's cross fingers...
Debug.Print iGetPosition("aap,noot,mies,wim,zus,jet", ",", 4)
End Sub


With kind regards,
Ton Teuns

*** Sent via Developersdex http://www.developersdex.com ***




All times are GMT +1. The time now is 01:41 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com