单元格内容分列多行_excel如何将同一个单元格的多行内容拆分

展开全部

你好,此问62616964757a686964616fe78988e69d8331333431353235题可以通过Excel VBA完美解决。详见 简书的文章《用ExcelVBA实现自动拆分单元格中的内容到多行中》网页链接。全部VBA代码如下,复制粘贴到你的Excel中就可以。Sub ChaiFenDanYuanGe()'声明变量

Dim arr() As String '定义一个字符串数组,用来存放单元格拆分后的数据

Dim m%              '定义一个整数,用来记录单元格内容需拆分的总行数

Dim n%              '定义一个整数,用来记录要拆分单元格的总个数

Dim row1, col1      '记录所选单元格所在的行数 和 列数

Dim i%, j%          '循环计数变量

Dim max%            '记录最大整数

'第1步,把拆分的数据存放到数组arr里    '第1.1步,确定要拆多少行,即确定m的值

'第1.1.1步,选择区域有几列?也就是要拆分的单元格的总个数,即n的值        '注意:我们选择的区域都是1行1列 或 1行多列

n = Selection.Count

If n = 1 Then   '如果选择区域仅有一个单元格,那么...

m = UBound(VBA.Split(Selection.Cells(1, n), Chr(10)))    Else            '如果选择区域不止一个单元格,那么通过比较,确定出选中区域,单元格能拆分的最多行数

m = UBound(VBA.Split(Selection.Cells(1, 1), Chr(10)))

For i = 2 To n

max = UBound(VBA.Split(Selection.Cells(1, i), Chr(10)))

If max > m Then

m = max

End If

Next i

End If

'第1.2步,存数据到数组,    'split分隔符是chr(10),也就是单元格里的alt+enter这种回车

'如果要用其他的分隔符,如用分号分隔,则直接split(单元格,";")即可

ReDim arr((n - 1), m) '数组arr()是m+1行,n列

For i = 0 To (n - 1)

'获取单元格split后的字符串个数,防止下标j越界

max = UBound(Application.Transpose(Application.Transpose(VBA.Split(Selection.Cells(1, i + 1), Chr(10))))) - 1

For j = 0 To m            If j <= max Then

arr(i, j) = Application.Transpose(Application.Transpose(VBA.Split(Selection.Cells(1, i + 1), Chr(10))))(j + 1)

End If

Next j

Next i'第2步,在所选区域上方,插入m行,并且复制所选区域的内容

'第2.1步,获取activecell所在的行数,selection第一个单元格的列数

row1 = ActiveCell.Row

col1 = Selection.Cells(1, 1).Column    '第2.2步,插入m行

For i = 1 To m

Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove

Next i

'第2.3步,复制行

Cells(row1 + m, 1).EntireRow.Copy

Range(Cells(row1, 1), Cells(row1 + m - 1, 1)).Select

ActiveSheet.Paste

Application.CutCopyMode = False'第3步,将数组arr中的数据覆盖拆分区域

For i = 0 To n - 1

For j = 0 To m

Cells(row1 + j, col1 + i) = arr(i, j)

Next j

Next i

'大功告成,将焦点放在A1单元格

Cells(1, 1).Select

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值