ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何将一维数组转换为二维数组

如何将一维数组转换为二维数组

作者:绿色风 分类: 时间:2022-08-18 浏览:129
楼主
DJ_Soo
Q:如何将一维数组转换为二维数组?
编写代码的时候得到了一个一维数组,我想将此数组输入到Excel中,如何使其反应为一个二维数组(固定列不固定行).
A:ALT+F11→插入模块→输入以下代码:
  1. Function One2TDim(arr As Variant, Col As Byte, Cnt As Long)
  2.     Dim Ro As Integer
  3.     Dim arrTp() As String
  4.     Dim RoTp As Integer
  5.     Dim i As Long
  6.     Dim ColTp As Byte
  7.     If Cnt = 0 Then
  8.         ReDim arrTp(1, 1)
  9.         One2TDim= arrTp
  10.         Exit Function
  11.     End If
  12.     Ro = (Col + Cnt - 1) \ Col
  13.     ReDim arrTp(1 To Ro, 1 To Col)
  14.     For i = 1 To Cnt
  15.         RoTp = (i + Col - 1) \ Col
  16.         ColTp = i - Col * (RoTp - 1)
  17.         arrTp(RoTp, ColTp) = arr(i)
  18.     Next i
  19.     One2TDim= arrTp
  20. End Function

One2TDim功能:将一维数组arr根据arr的元素个数Cnt来分为Col列的二维数组.(一维数组最小下标为1)
例如arr=array(1,2,3,4,5,6,7,8)中Cnt=7,如果我设置Col为2:
  1. Sub Test()
  2.     Dim arr, Cnt, Col, arrTmp
  3.     Cnt = 7
  4.     arr = Array(1, 2, 3, 4, 5, 6, 7, 8)
  5.     ReDim Preserve arr(1 To 7)
  6.     Col = 2
  7.     arrTmp = One2TDim(arr, 2, 7)
  8.     Stop
  9. End Sub
arrTmp最终结果是一个4行2列的二维数组:arrTmp(1 to 4,1 to 2)
2楼
lrlxxqxa
有实例吗?一维变二维的应用意义能给说一下吗?
3楼
DJ_Soo
想了一下,公司的东西还不能随便发.
这里简单说明一下吧,比如我的数据对应很多的结果.
我用一维数组获取这些结果,但是放到Excel的时候,为了打印的时候能够更直观,我需要把这些数据转成二维(固定列)
这样到达设定的界限就转行,不会影响打印的效果.
当然,即使不是为了打印,也是需要美观的,一串数据只有一行,阅读起来也很不方便.
打个比方,就像排队做操一样,我们班级的人数是40,但是不能让这40个人都站一条队吧?
所以分成4个队,每个队伍10个人.和排队做操有区别的是,如果是35人,我还是排4队,应该是三个队中有10人,最后一条队伍5人.

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap