Welcome toExcel.Tips.Net
Tips.Net Home
ExcelTips Home
Ask an Excel Question
Make a Comment
ExcelTips FAQ
ExcelTips Premium
Learn Access Now
Free Printable Forms
Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips
Advertise on the
ExcelTips Site
Making the Formula Bar Persistent
Selecting Tabs in Dialog Boxes
Pulling Formulas from a Worksheet
John has a worksheet that, in column A, has a large number of very long text strings. He needs to individually pull the first 249 characters from each string, placing a single character in each cell to the right of the string.
There are a couple of ways that you can accomplish this task. It is quite easy to do through the use of a simple formula. For instance, if your first text string is in cell A1, put the following formula to its right, in cell B1:
=MID($A1,COLUMN()-1,1)
This formula uses Excel worksheet functions to pull apart the text string. The COLUMN function, in this case, returns the value 2 since the formula is in column B and that is the second column in the worksheet. This value is decremented by 1, and then used as a pointer into the string in cell A1, marking where the extracted character should come from. When you copy this formula right, for however many cells desired, you end up with individual characters from the string, in consecutive order.
Of course, if you have quite a few strings in the worksheet (as John does), then copying this formula over 249 columns and down, say, several hundred rows can make for a very sluggish worksheet. In such situations it may be desirable to use a macro to split apart the strings instead of a formula. The following macro, SplitUp, is one approach to doing the actual tearing apart.
Sub SplitUp()
Dim c As Range
Dim r As Range
Dim sTemp As String
Dim z As Integer
Set r = Range("A1", Range("A65536").End(xlUp))
For Each c In r
sTemp = Left(c, 249)
For z = 1 To Len(sTemp)
c.Offset(0, z) = Mid(sTemp, z, 1)
Next z
Next
End Sub
The macro starts by defining a range (r) that consists of all the cells in column A that contain values. The c variable is then used to represent each cell in the range, and the first 249 characters pulled from each cell. A For ... Next loop is then used to pull each character from the string and stuff it into a cell to the right of the string.
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (2790) applies to Microsoft Excel versions: 97 2000 2002 2003 2007
Step Up and Take Control! Subscribers to ExcelTips know just how valuable a resource it is. ExcelTips Premium provides twice the number of exceptional, easy-to-understand tips every week in an ad-free newsletter, as well as substantial discounts on ExcelTips archives and e-books.