录制一个宏,保存这个宏名称为 ”换行“,然后编辑”换行“这个宏,将以下代码替换到这个宏中,运行宏即可。这个是针对A1这个一格,将里面的字符串替换出来,重新在B这一列将所有数据从上到下依次排列起来。
如果有多个表格,需要把代码优化一下,无非是重复执行下面这个过程,将每一个单元格中的数据提取出来,在SHEET2中依次列出来即可。
Sub 换行()
' 换行 宏
Dim temStr As String
temStr = Cells(1, 1)
Dim i, j, loc1, loc2, Nums1 As Integer
Dim temStrs(1000) As String
For i = 1 To Len(temStr)
loc1 = 0
If Mid(temStr, i, 1) <> "!" Then
If loc1 = 0 Then loc1 = i
For j = i To Len(temStr)
If Mid(temStr, j, 1) = "!" Then
loc2 = j
i = loc2
Nums1 = Nums1 + 1
temStrs(Nums1) = Mid(temStr, loc1, loc2 - loc1)
GoTo 100
End If
Next j
End If
100 Next i
i = 0
For i = 1 To Nums1
Cells(i, 2) = i & " " & temStrs(i)
Next i
End Sub
追问非常感谢!非常接近我想要的答案了。
只是我是想在同一个单元格里面换行显示。现在换行了就在另一个单元格里面显示了。
追答在同一个单元格里面换行,也可以实现,只需要把上面的代码优化一下,每次点击任何一个单元格就自动执行,但会出现重复读取单元格数据的问题,也就是死循环。
主要是我不知道你原始数据所在的区域,所以这个不太好弄,要是有原表很快就可以实现。