微信公众号:yhjbox(永恒君的百宝箱),获取最新文章、资源。

Excel vba 实例(18) – 一键将单列长数据平均拆成多列

Excel VBA 实例 永恒君 1864℃ 0评论
今天分享的VBA实例是:一键将单列长数据平均拆成多列

问题描述

不少软件都带有一键导出为excel文件或者csv文件的功能,有时候导出的数据列数比较少,但是有很多行。为了方便查看或者节约打印的纸张,需要尽量将整列的长数据平均拆成短数据。如下图:

将1列100行的数据拆成5列20行。

思路

这个需求,其实比较简单就可以实现。
1、从起始行开始遍历,每隔20行就将遍历的内容复制(或者剪切)一遍。
2、将复制(或者剪切)的内容粘贴到选定的列,下一个20行的内容则复制在下一列。

核心代码如下:

Sub cfdl()

flag = 0 '用来标记是否到20行

hang = 2 '数据起始列
lie = 4 '数据起始列

For i = 2 To 101 '数据从2行到101行
    Range("A" & i).Copy Cells(hang, lie)'复制单元格内容
    hang = hang + 1
    flag = flag + 1
    If flag = 20 Then'如果数据是否遍历了20行,是则将数据粘贴到下一列
        flag = 0
        lie = lie + 2
        hang = 2
    End If
Next

效果演示

问题扩展

上面是单列数据的情况,如果是有多列,比如3列150行的数据,那么就要注意修改以下几个地方:

1、粘贴数据的位置,这里我设置从2行5列单元格开始
hang = 2 '数据起始列
lie = 5 '数据起始列

2、总共数据的行数,这里修改为150行

For i = 2 To 151 '数据从2行到151行,一共150行

3、原数据的列数,本例是有3列,那么rang()函数需要加上C列。

Range("A" & i,"C" & i).Copy Cells(hang, lie)

'3列数据就是Range("A" & i,"C" & i),4列就是Range("A" & i,"D" & i),以此类推

4、粘贴数据的列数

lie = lie + 3 '这里有3列数据要复制,5列就改为+5

效果演示

如果需要源文件的话,后台回复「平均拆分」即可。其他VBA实例,可以在公号里「精华整理」-「VBA实例」进行查看。

如果你觉得文章还不错,请大家点赞分享下。你的肯定是我最大的鼓励和支持。

收藏 | 17个Excel vba实例汇总Excel vba 实例(17) - 遍历多个工作簿并提取内容到总表

Excel vba 实例(16) - 按指定字段分类批量提取内容

Excel vba 实例(15) - 按指定字段一键筛选并取最低价记录

微信公众号:永恒君的百宝箱
个人博客:www.yhjbox.com

转载请注明:永恒君的百宝箱 » Excel vba 实例(18) – 一键将单列长数据平均拆成多列

喜欢 (1)
发表我的评论
取消评论
表情