楼主 DJ_Soo |
Q:如何将一维数组转换为二维数组? 编写代码的时候得到了一个一维数组,我想将此数组输入到Excel中,如何使其反应为一个二维数组(固定列不固定行). A:ALT+F11→插入模块→输入以下代码:
- Function One2TDim(arr As Variant, Col As Byte, Cnt As Long)
- Dim Ro As Integer
- Dim arrTp() As String
- Dim RoTp As Integer
- Dim i As Long
- Dim ColTp As Byte
- If Cnt = 0 Then
- ReDim arrTp(1, 1)
- One2TDim= arrTp
- Exit Function
- End If
- Ro = (Col + Cnt - 1) \ Col
- ReDim arrTp(1 To Ro, 1 To Col)
- For i = 1 To Cnt
- RoTp = (i + Col - 1) \ Col
- ColTp = i - Col * (RoTp - 1)
- arrTp(RoTp, ColTp) = arr(i)
- Next i
- One2TDim= arrTp
- End Function
One2TDim功能:将一维数组arr根据arr的元素个数Cnt来分为Col列的二维数组.(一维数组最小下标为1) 例如arr=array(1,2,3,4,5,6,7,8)中Cnt=7,如果我设置Col为2:
- Sub Test()
- Dim arr, Cnt, Col, arrTmp
- Cnt = 7
- arr = Array(1, 2, 3, 4, 5, 6, 7, 8)
- ReDim Preserve arr(1 To 7)
- Col = 2
- arrTmp = One2TDim(arr, 2, 7)
- Stop
- End Sub
arrTmp最终结果是一个4行2列的二维数组:arrTmp(1 to 4,1 to 2) |
3楼 DJ_Soo |
想了一下,公司的东西还不能随便发. 这里简单说明一下吧,比如我的数据对应很多的结果. 我用一维数组获取这些结果,但是放到Excel的时候,为了打印的时候能够更直观,我需要把这些数据转成二维(固定列) 这样到达设定的界限就转行,不会影响打印的效果. 当然,即使不是为了打印,也是需要美观的,一串数据只有一行,阅读起来也很不方便. 打个比方,就像排队做操一样,我们班级的人数是40,但是不能让这40个人都站一条队吧? 所以分成4个队,每个队伍10个人.和排队做操有区别的是,如果是35人,我还是排4队,应该是三个队中有10人,最后一条队伍5人. |