用ExcelVBA实现自动拆分单元格中的内容到多行中

您所在的位置:网站首页 vba单元格自动换行代码 用ExcelVBA实现自动拆分单元格中的内容到多行中

用ExcelVBA实现自动拆分单元格中的内容到多行中

2024-07-16 19:25| 来源: 网络整理| 查看: 265

一、背景

  我们在使用Excel办公软件的时候,有时会遇到这种情况:我们想把一个或多个单元格中的内容拆分到多行。例如表1所示:

药品名称 简述 详述 健胃消食片 1、成分;2、性状;3、功能主治;4、规格;5、用法用量; 1、太子参、陈皮、山药、炒麦芽、山楂。辅料为蔗糖、硬脂酸镁。2、本品为浅棕黄色的片。气微香,味微甜、酸。3、健胃消食。用于脾胃虚弱所致的食积,症见不思饮、嗳腐酸臭、腕腹胀满;消化不良见上述证候者。4、每片重0.5克。5、口服,可以咀嚼。一次4-6片,一日3次。小儿酌减。6、怎么多了一项?

  我们有时想把表1的第2列、第3列,拆成表2的形式:

药品名称 简述 详述 健胃消食片 1、成分; 1、太子参、陈皮、山药、炒麦芽、山楂。辅料为蔗糖、硬脂酸镁。 健胃消食片 2、性状; 2、本品为浅棕黄色的片。气微香,味微甜、酸。 健胃消食片 3、功能主治; 3、健胃消食。用于脾胃虚弱所致的食积,症见不思饮、嗳腐酸臭、腕腹胀满;消化不良见上述证候者。 健胃消食片 4、规格; 4、每片重0.5克。 健胃消食片 5、用法用量; 5、口服,可以咀嚼。一次4-6片,一日3次。小儿酌减。 健胃消食片 6、怎么多了一项? 二、我们怎样拆它? 手动拆  我们可以在Excel里手动拆,当然,批量操作时,很耗时间的 ╥﹏╥... 自动拆  可以考虑编写ExcelVBA程序来实现,这能提高不少效率呢~

  我呢,当然是选择自动拆啦 ( ╯▽╰)

三、我心目中的自动拆

  怎样才算是合格的自动拆呢?只要我们编写出来的程序能实现下面三个功能就OK啦:

可拆一,也可拆多:既可以拆分一个单元格中的内容,也可以拆分一行多列单元格区域中的内容; 一行多列,不完全对应时,也能拆:比如表1中,虽然“详述”列多了第6项,但仍可以拆成表2的形式; 未拆的部分,自动复制:比如表2中,“健胃消食片”就是自动复制的。 四、代码时刻

  代码分了三部分:     第1步,把拆分的数据存放到数组里;     第2步,在所选区域上方,插入行,并且复制所选区域的内容;     第3步,将数组中的数据覆盖拆分区域。   接下来就是激动人心的代码时刻了(≧∇≦)ノ

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3