Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2595|回复: 2

[已解决]数组赋值

[复制链接]
发表于 2017-4-9 10:20 | 显示全部楼层 |阅读模式
本帖最后由 lingyuncelia 于 2017-4-9 13:23 编辑

捕获.PNG
运行如下代码,得出以上结果
Sub celia()
Dim arr As Variant
arr = Range("a1:a9").Value
Range("b1:d3") = arr
End Sub

如果我想结果如下,该如何改善代码?
捕获1.PNG

最佳答案
2017-4-9 12:02
Sub celia()
Dim arr(), arrRC
Dim ROWk As Integer, COLUMNk As Integer, arrK As Integer, arrA As Integer
   
    arrA = ActiveSheet.Range("a65535").End(xlUp).Row
    arrK = Application.RoundUp(Sqr(arrA), 0)
   
    arr = Range("a1:a" & arrA)
    arrRC = 1
   
    For ROWk = 1 To arrK
        For COLUMNk = 1 To arrK
            If arrRC > arrA Then
                COLUMNk = COLUMNk + 1
                Exit For
            Else
                Cells(ROWk, COLUMNk + 1) = arr(arrRC, 1)
                arrRC = arrRC + 1
            End If
        Next COLUMNk
    Next ROWk
   
End Sub
发表于 2017-4-9 12:02 | 显示全部楼层    本楼为最佳答案   
Sub celia()
Dim arr(), arrRC
Dim ROWk As Integer, COLUMNk As Integer, arrK As Integer, arrA As Integer
   
    arrA = ActiveSheet.Range("a65535").End(xlUp).Row
    arrK = Application.RoundUp(Sqr(arrA), 0)
   
    arr = Range("a1:a" & arrA)
    arrRC = 1
   
    For ROWk = 1 To arrK
        For COLUMNk = 1 To arrK
            If arrRC > arrA Then
                COLUMNk = COLUMNk + 1
                Exit For
            Else
                Cells(ROWk, COLUMNk + 1) = arr(arrRC, 1)
                arrRC = arrRC + 1
            End If
        Next COLUMNk
    Next ROWk
   
End Sub
回复

使用道具 举报

 楼主| 发表于 2017-4-9 13:24 | 显示全部楼层
Sub 按行按列赋值()
r = 1
For i = 1 To 3
For j = 2 To 4
Cells(i, j) = Cells(r, 1)
r = r + 1
Next
Next
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-20 15:07 , Processed in 0.359081 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表