Merge Cells

S

Steve Drenker

Hi...There have been many posts about merging cells, but I haven't seen this
issue addressed.

I want to take several cells in a column and merge them into one cell
separated by return characters. Example:

Input cells:
- - - - - -
| Bob | A1
- - - - - -
| Joe | A2
- - - - - -
| Ken | A3
- - - - - -

Desired result after merge:
- - - - - -
| Bob |
| Joe | A1
| Ken |
- - - - - -
| <blank> | A2
- - - - - -
| <blank> | A3
- - - - - -

I can create the result by manually entering returns via
Option-Command-Return on my Mac and (IIRC) Ctrl-Return on my PC.

I wrote the following macro to automate the merge. Unfortunately, the
inserted CRs are not recognized in the merged cell (i.e., I get BobJoeKen in
A1):

Sub MergeCells()
Dim rng As Range
Dim cell As Range
Dim OutStr As String

Set rng = Intersect(Selection, ActiveSheet.UsedRange)

If rng Is Nothing Then
MsgBox "Select a range to be merged"
GoTo done
End If

For Each cell In rng
OutStr = OutStr & cell.Text & Chr(13)
Next cell

OutStr = Left(OutStr, Len(OutStr) - 1) ' Strip off final CR
rng.ClearContents ' Clear original selected range
rng.Cells(1).Value = OutStr ' Put new string into top cell
done:
End Sub

Yet, if I manually enter A (CR) B (CR) C into a cell and run the following
macro, I see that the three lines are indeed separated by two Chr(13). What
am I missing?

Sub GetSeparatorChar()
' Select one cell with "A," "B," and "C" in it separated by
' carriage returns (CR)
Dim c As String
Dim i As Integer

For i = 1 To Len(Selection.Text)
Debug.Print Asc(Mid(Selection.Text, i, 1))
Next i

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top