Excel精英培训网

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

[已解决]如何把"a1:c5"单元格区域写入一维数组

[复制链接]
发表于 2013-1-27 12:51 | 显示全部楼层 |阅读模式
如何把"a1:c5"单元格区域写入一维数组
反之,如何把一维数组写入"a1:c5"单元格区域,a1:a5写满后再写b1:b5再写c1:c5
最佳答案
2013-1-27 13:30
  1. Sub 二维变一维()
  2.     Dim arr, i&, x&, y&
  3.     Dim arr2(), arr3()
  4.     arr = Range("a1:c5")
  5.     ReDim arr2(1 To UBound(arr) * UBound(arr, 2))
  6.     For x = LBound(arr) To UBound(arr)
  7.         For y = LBound(arr, 2) To UBound(arr, 2)
  8.             i = i + 1
  9.             '二维变一维
  10.             arr2(i) = arr(x, y)
  11.             '一维变二维
  12.             'arr(x, y) = arr2(i)
  13.         Next
  14.     Next
  15. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-1-27 13:01 | 显示全部楼层
这是个二维数据啊。亲。
除非你再通过经过转化,变成一维数组。

评分

参与人数 1 +3 收起 理由
hcy1185 + 3 请给个链接好吗?

查看全部评分

回复

使用道具 举报

发表于 2013-1-27 13:08 | 显示全部楼层
技巧里和函数时不是有个多变一,一变多嘛,跟你的需求就是一样的。

评分

参与人数 1 +3 收起 理由
hcy1185 + 3

查看全部评分

回复

使用道具 举报

发表于 2013-1-27 13:23 | 显示全部楼层
在函数班或技巧班,一般都有会出这样的题的。
小妖的视频里也有的。

回复

使用道具 举报

 楼主| 发表于 2013-1-27 13:30 | 显示全部楼层
hwc2ycy 发表于 2013-1-27 13:23
在函数班或技巧班,一般都有会出这样的题的。
小妖的视频里也有的。

vba能否实现?!!!!!!!!!!!!
回复

使用道具 举报

发表于 2013-1-27 13:30 | 显示全部楼层    本楼为最佳答案   
  1. Sub 二维变一维()
  2.     Dim arr, i&, x&, y&
  3.     Dim arr2(), arr3()
  4.     arr = Range("a1:c5")
  5.     ReDim arr2(1 To UBound(arr) * UBound(arr, 2))
  6.     For x = LBound(arr) To UBound(arr)
  7.         For y = LBound(arr, 2) To UBound(arr, 2)
  8.             i = i + 1
  9.             '二维变一维
  10.             arr2(i) = arr(x, y)
  11.             '一维变二维
  12.             'arr(x, y) = arr2(i)
  13.         Next
  14.     Next
  15. End Sub
复制代码

评分

参与人数 2 +24 收起 理由
hcy1185 + 3 很给力!
windimi007 + 21 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-1-27 14:50 | 显示全部楼层
VBA一维二维互转.rar (11.71 KB, 下载次数: 25)

评分

参与人数 1 +3 收起 理由
hcy1185 + 3 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-1-27 22:08 | 显示全部楼层
hwc2ycy 发表于 2013-1-27 13:30

Sub 一维变二维()  '请修改一下
    Dim arr, i&, x&, y&
    Dim arr2()
    arr = Application.Transpose(Range("g1:g15"))
    ReDim arr2(1 To UBound(arr) / 3, 1 To 3)
    For x = 1 To UBound(arr) / 3
        For y = 1 To UBound(arr) / UBound(arr)
        
            
            arr2(x, y) = arr '一维变二维
        Next
    Next
    [j1].Resize(UBound(arr2), UBound(arr2, 2)) = Application.Transpose(arr2)
End Sub
回复

使用道具 举报

发表于 2013-1-28 09:10 | 显示全部楼层
hcy1185 发表于 2013-1-27 22:08
Sub 一维变二维()  '请修改一下
    Dim arr, i&, x&, y&
    Dim arr2()
  1. Sub 一维变二维()
  2.     Dim arr, i&, x&, y&
  3.     Dim arr2()
  4.     arr = Application.Transpose(Range("g1:g15"))
  5.     ReDim arr2(1 To UBound(arr) / 3, 1 To 3)
  6.     For i = 1 To UBound(arr)
  7.         For x = 1 To UBound(arr) / 3
  8.             For y = 1 To 3
  9.                 arr2(x, y) = arr(i)    '一维变二维
  10.                 i = i + 1
  11.             Next y
  12.         Next x
  13.     Next i
  14.     [j1].Resize(UBound(arr2), UBound(arr2, 2)) = arr2
  15. End Sub
复制代码
回复

使用道具 举报

发表于 2013-1-28 09:13 | 显示全部楼层
hcy1185 发表于 2013-1-27 22:08
Sub 一维变二维()  '请修改一下
    Dim arr, i&, x&, y&
    Dim arr2()
  1. Sub 一维变二维()
  2.     Dim arr, i&, x&, y&
  3.     Dim arr2()
  4.     arr = Range("g1:g15")
  5.     ReDim arr2(1 To UBound(arr) / 3, 1 To 3)
  6.     For i = 1 To UBound(arr)
  7.         For x = 1 To UBound(arr) / 3
  8.             For y = 1 To 3
  9.                 arr2(x, y) = arr(i, 1)   '一维变二维
  10.                 i = i + 1
  11.             Next y
  12.         Next x
  13.     Next i
  14.     [j1].Resize(UBound(arr2), UBound(arr2, 2)) = arr2
  15. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
hcy1185 + 3 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 23:10 , Processed in 0.506377 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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