Excel VBA:数据批量转置处。数据批量转置处理。

下面讲解一个案例,就是数据的批量转置处理。转化之后,也讲过雷同的案例,看一下这个需求,就是说黄色这部分是事先填写好的数据,要将这部分数据进行转置。转化有一种就是复制、粘贴,然后选择转置。

但这个不是这样,需要转化是必列式模拟结果,就是将这一行里面从内容开始到后面最后一个有数据的位置转成这样一列,再空一个格,再转第二行到这,然后再空一个格,再往下再转第三个,这是转制需求。而A列是转置使代码转制完的模拟结果,需求是比较简单,实现也是比较简单,看一下代码。

·第一个,用表格实际上的转制方式进行处理的,R等于R,就是这个位置控制行的位置。因为直接用转置在操作单元格,所以把屏幕刷新这两属性做一下设置,下面是对前面这部分数据进行变利,主要是对第五列进行变利,根据第五列是从第二行到这一列有数据的最大行号,就是用HT的函数来实现的。

·这个之前讲过,大家注意一下setrng,要取一个去这个区域怎么取,取的是转行,这个是这么多列,也就And,这依然是个 and,也就是说取到这一行最大的列号,往左找找到第一个飞空的,就是这个意思。

·依然使用 and,这之前也讲过这个参数,就相当于对于这一行来讲,找到就是这个单元格对下一行找这个,对下一行找这个r、N、g,就是对应行最右侧有数据的单元格。然后将这个数据放入A、R数字怎么放,用了一个转制函数,转化的区域就是用了rng。

·rng也讲过对应单元格区域,sales街舞这没什么说的,就是这个位置。然后语上最后一个单元格,用rng取,就取他的区间,左上角右下角这么区间,左上右下都无所谓,这样取一个区间,对,这个就是取区域,取这个区域。

·然后用那个转置将它转置,因为它是行转制成列,AI数组就依然是个二位数组但是变成列这种了,再将AI复制给它。R一英文刚才说了,R对应的号size就是要这一列存储多少个数据嘛,就是数组这么多的,那等于ar,这样逐一转置过来。

同时,这时你这对应的行号进行修改,除了加上刚才的数据之外,因为要空一行吗?所以还要做一个加一,这样就完成了这样数据直接对应的转置。当然这个代码这地方大家还可以,比如说有些数据你可以接着往上添,好像添加完之后代码更加精简,实际上这样做处理是给大家比较直观显示出来,这个可以演示一下,把A 列指定删除了。

之前看一下,比较简单也是直接过来。

把行转成列,下面这种超则单元格如果数据比较大效率比较低,所以这种可以直接用小组来处理,也是比较简单的。看一下a、r等于第一car的原因值,第一因为它跟前面是区分的,所以第一相当于这个区ctrl reindeer之前也讲过,单独讲过包括 user reindeer 和下面根据a、r重新定义 b、r的边界就 b r 一个范围。

因为要按列存放,所以最大的范围就是a r 数组最大的行号乘以最大的力就是区间有多少行乘以列宽,这个区间足够用了,毕竟第一个还有一个标题,还有其他还存在空白,所以处理一下,设置个 b r 数组一个范围。

注意大家 e two e这是表示它设置是一个二位数组,行为比较多列,只有一列r等于零依然是控制在b r里面写出数据的位置。下面就是对应r two,这个数组的下级依为的对应的是这个区间。

大家注意一下 i,它是从第二列开是的,因为不需要考虑序号所以从他开始的。后面有个特点就是如果这个单元格等于零就退出去退出这个循环,没必要再便宜后面的单元格。如果不等于零r等于二加一,就对这个 br里面进行数据写入,对于他来讲,就这个如果这个不等于空,就往 b r 里写 b r写,接着写,当写到这空的时候,这一行就不再接着往后循环就跳出了,是这样的,因为这面数据要考虑它一个连续性的问题。

下面跳出之后r等于二加一,因为它这里面刚才说了这中间会加一个空白的单元格,所以要加一。最后循环完了之后就将r 数组复制给a 列 a r这个区间,insider行。

依然把它清测,执行代码看一下,依然是出来跟这样一样。还是那样,如果数据规模比较大建议使用数组,这样效率高一点,内存内处理。

如果要下载相关的视频文档可以来 b站对应视频下方的评论区有链接,可以下载。