分享

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

 剩矿空钱 2018-07-07

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表


VBA简单入门29:数组的数据来源(工作表、Array、Split)

上一章介绍了数据是如何写入数组的。这一章,介绍数组的数据如何输出到工作表。

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表


1、 数组数据输出到工作表

1.1、 一维数组输出数据到工作表

数组中的数据输出到工作表,常常使用Range对象的Resize属性。

通过Resize建造一个大小和数组一样的单元格区域来写入数组数据。

其中,Resize的行列两参数往往使用变量。

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

注意1:Array数组的下标0,上标3,它有4个元素。这种情况使用数组的上标来确定Resize大小,需注意使用Ubound() 1,否则会缺少数据。

注意2:一维数组数据输出到工作表的一列,往往需要转置函数Transpose。

1.2、 二维数组输出到工作表

我们知道,数据来自于工作表的数组都是二维数组,要放回工作表,就相当于同根同源了。(不改变维度数)

所以,二维数组天生就和工作表八字契合。

使用Resize(一维上标,二维上标)建造和二维数组大小适当的单元格区域写入其数据。

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

2、 数组的转置:数组的转置使用Transpose函数。

2.1、一维数组转二维数组

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

2.2、 二维数组转一维数组

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

2.3、 二维数组使用Transpose,相当于工作表的转置操作,一维和二维维度互换。

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

2.4 当然,一维数组和二维数组之间的相互转置或数据传递,依然可以使用循环。

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

3、 例子:A列填充1-66666,使用数组和使用单元格效率比较。

3.1、使用单元格方法

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

3.2、使用数组方法

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

同样配置的电脑,使用数组的效率比单元格要高得多。

4、 扩展内容:Transpose函数的限制

Transpose函数在数据超过65536条时会转置失败。

但我在Excel2016当中测试,它早早就发生了错误(不知道为什么……)

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表

若要避免发生此问题,方法就是不使用Transpose,不用就没有问题了。

将数组arr设置成二维数组,再输出到工作表。

VBA简单入门30:数组转置Transpose、数组Resize输出到工作表


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多