Asked by:
Seperating characters into different cells

Question
-
Is there a way of seperator characters into different cells of excel spreadsheets
like from cell A1;
FHKDFIN 22222222001
into;
FH in A1
KDFIN in B1
22222222 in C1
and 001 in d1
Note: Characters are not always fix they are dynamic
Sunday, October 7, 2007 3:59 PM
All replies
-
Hi again!
Need at least some algorithm of separatingSunday, October 7, 2007 10:15 PM -
Have you tried writing a bit of VBA to do it?
Here is what the Help system says about it
Parses a range of data and breaks it into multiple cells. Distributes the contents of the range to fill several adjacent columns; the range can be no more than one column wide.
expression.Parse(ParseLine, Destination)
expression Required. An expression that returns a Range object.
ParseLine Optional Variant. A string that contains left and right brackets to indicate where the cells should be split. For example, "
[xxx][xxx]
" would insert the first three characters into the first column of the destination range, and it would insert the next three characters into the second column. If this argument is omitted, Microsoft Excel guesses where to split the columns based on the spacing of the top left cell in the range. If you want to use a different range to guess the parse line, use a Range object as the ParseLine argument. That range must be one of the cells that's being parsed. The ParseLine argument cannot be longer than 255 characters, including the brackets and spaces.Destination Optional Variant. A Range object that represents the upper-left corner of the destination range for the parsed data. If this argument is omitted, Microsoft Excel parses in place.
Example
This example divides telephone numbers of the form 206-555-1212 into two columns. The first column contains only the area code, and the second column contains the seven-digit telephone number with the embedded hyphen.
Worksheets("Sheet1").Columns("A").Parse _ parseLine:="[xxx] [xxxxxxxx]", _ destination:=Worksheets("Sheet1").Range("B1")
Remember to take out the two _ (underscore characters) so that it all goes on the same line.
Have fun.
Sebastian Wheaterbix
Friday, April 25, 2008 1:39 PM -
Using your example string - FHKDFIN 22222222001
I spent some time testing and found that the following works fine (must include "x" for spaces)...
Code SnippetPrivate Sub CommandButton1_Click()
Worksheets("Sheet1").Columns("A").Parse _
parseLine:="[xx] [xxxxxxxx] [xxxxxxxx] [xxx]", _
Destination:=Worksheets("Sheet1").Range("A1")
End SubExcept that the "001" value in cell D1 is displayed as "1". The leading zeros are not displayed.
I tried changing the NumberFormat with...
Code SnippetRange("D1").Select
Selection.NumberFormat = "@"However, that has no effect.
Anyone have a suggestion as to how to treat the zero values so they are displayed?
Saturday, April 26, 2008 4:39 AM -
Hi, if you want an alternative to the above you can write the parsing yourself. Attach a keystroke to the below code in a new module and the active cell will be parsed according to your rules above.
Code SnippetPublic Sub Splitter()
Dim str As String
Dim lngRow, lngCol As LongWith ActiveCell
lngRow = .Row
lngCol = .Column
str = ActiveCell.Value
End With
With ActiveSheet
.Cells(lngRow, lngCol) = Left$(str, 2)
.Cells(lngRow, lngCol + 1) = Mid$(str, 3, 5)
.Cells(lngRow, lngCol + 2).NumberFormat = "@"
.Cells(lngRow, lngCol + 2) = Mid$(str, 13, 8)
.Cells(lngRow, lngCol + 3).NumberFormat = "@"
.Cells(lngRow, lngCol + 3) = Mid$(str, 21, 3)
End With
End SubSaturday, April 26, 2008 1:30 PM