'调用过程
Sub 使用()
Dim 行, 列
'下面程序是 转换 第2行第5列到第2行第800列
'由于行一直在增加,所以实际并不会转换到原数据的800列
行 = 2
列 = 5
For 行 = 2 To 800 Step 1
Call 换行单元格转真实行(Cells(行, 列))
Next
End Sub
'过程
Sub 换行单元格转真实行(rng As Range)
'Dim rng As Range '处理的单元格
Dim str As String '消掉处理的单元格中所有换行符的文本
Dim i '处理的换行符个数 = 原单元格字符个数 - 处理后单元格字符个数 ( i 结果是多少 这个单元格就有 i+1 行)
Dim 行数 '处理单元格里面有多少行
Dim rngcol
rngcol = rng.Column '处理单元格在第几列
Dim rngstr As String
rngstr = rng.Value '处理单元格的内容
str = Application.WorksheetFunction.Substitute(rngstr, "" & Chr(10) & "", "")
i = VBA.Len(rng) - VBA.Len(str) '得到 单元格 里面 一共多少个 换行符 从而得到行数为i+1
If i > 0 Then '如果有换行符的话
行数 = i + 1 '得到行数
For i = 行数 To 2 Step -1 '有多少行循环多少次
Rows(rng.Row + 1).Insert '先在 处理的单元格下面插入一行
Cells(rng.Row + 1, rngcol) = Split(rngstr, "" & Chr(10) & "")(i - 1) '然后把最后一行内容给写进去,倒数第二行内容写进去…………第二行写进去
Next
Cells(rng.Row, rngcol) = Split(rngstr, "" & Chr(10) & "")(0) '然后把第一行内容写到原位置
End If
'Split(字符串, 分隔符)(第几个)
End Sub
1