On Thu, 15 Nov 2007 15:52:02 -0800, sfleck
wrote:
I need to keep it in the same format as it needs to be entered into the
field with those seperators
What I am looking for I guess is to seperate out by 200 characters ensuring
that the 200th character was not going to cut a record in half
Here is a VBA user defined function that will parse out the segments of your
string. The arguments to the function are the string (or cell reference
containing the string); the maximum length that you want to have; and the Index
(or segment to return == e.g. 1,2,etc).
The string will not break at a separator; it also, as written, will not return
the final separator (but can if you want).
Using 89 for your sample string, the function will return the following (using
1,2,3,4 for Index):
262662,1;287740,1;266043,1;265832,1;283351,1;29886 4,1;292744,1;301754,1;302201,1;283346,1
296536,1;292910,1;274865,1;293748,1;77029,1;47952, 1;295392,1;292327,1;273352,1;276065,1
256396,1;269669,1;269671,1;82205,1;301349,1;269668 ,1;260051,1;81462,1;269670,1;302623,1
281220,1;297459,1;257806,1;271241
To enter the UDF, <alt-F11 opens the
VB Editor.
Ensure your project is highlighted in the Project Explorer window, then
Insert/Module and paste the code below into the window that opens.
To use it, enter a formula of the type:
=reparsestring($A$1,89,1) (returns the first max of 89 characters
=reparsestring($A$1,89,2) (returns the 2nd max of 89)
etc.
================================================== ========
Option Explicit
Function reParseString(str As String, MaxLength As Long, Index) As String
Dim re As Object
Dim mc As Object
Dim sPat As String
Dim sQuant As String
sQuant = "{1," & MaxLength & "}"
sPat = "([\s\S]" & sQuant & ")[,;]|$"
Set re = CreateObject("vbscript.regexp")
re.Global = True
re.Pattern = sPat
If re.test(str) = True Then
Set mc = re.Execute(str)
reParseString = mc(Index - 1).submatches(0)
End If
End Function
======================================
--ron