Excel精英培训网

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

[已解决]哪位大神有办法将brr变为二维数

[复制链接]
发表于 2016-2-14 16:00 | 显示全部楼层 |阅读模式
想将【A1:I9】实现每行循环读取,使brr=[A1:I1]、brr=[A2:I2]、brr=[A3:I3]……brr=[A9:I9]?
一个一个写实在太麻烦,如何用代码写呢?
Sub Macro1()
arr = [a1:i9]
For i = 1 To 9
    brr = Application.Index(arr, i, 0) '第i行
Next
End Sub
以上代码的确可以实现每行的循环读取
可惜brr是一维数,哪位大神有办法将brr变为二维数?
因为后面我要计算的数据比较精确,一维数无法计算
最佳答案
2016-2-14 19:55
不明白下一步你要操作什么,比如取brr(1,1)
  1. Sub Macro1()
  2. For i = 1 To 9
  3.     brr = Range(Cells(i, 1), Cells(i, "i"))
  4.     msgbox brr(1,1)
  5. Next
  6. End Sub
复制代码
发表于 2016-2-14 16:06 | 显示全部楼层
计算和维数有什么关系?

brr = Application.Transpose(Application.Index(arr, i))
回复

使用道具 举报

发表于 2016-2-14 16:06 | 显示全部楼层
用application.transpose转一转就可以了
回复

使用道具 举报

发表于 2016-2-14 16:16 | 显示全部楼层
另:用Application.Index比老实用循环读取慢多了,太不划算。后面还要再transpose一下,感觉完全是兜圈子玩
回复

使用道具 举报

发表于 2016-2-14 18:30 | 显示全部楼层
本帖最后由 dsmch 于 2016-2-14 18:34 编辑

上清老师在另一个帖子中,循环把每行赋值数组最简单可行
http://www.excelpx.com/forum.php?mod=viewthread&tid=385215#pid4006308
  1. Sub Macro1()
  2. For i = 1 To 9
  3.     brr = Range(Cells(i, 1), Cells(i, "i"))
  4. Next
  5. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-2-14 19:46 | 显示全部楼层
dsmch 发表于 2016-2-14 18:30
上清老师在另一个帖子中,循环把每行赋值数组最简单可行
http://www.excelpx.com/forum.php?mod=viewthrea ...

这个的确可以成为二维数,可惜不是brr=[A1:I1]、brr=[A2:I2]、brr=[A3:I3]……brr=[A9:I9]这种效果啊?计算时不是计完一行到下一行,而是【A1:I9】全部一起计算啊
即使我写成
sub celia()
for i= 1 to 9
brr=cells(i,1).resize(,9)
next
end sub
居然都无效
回复

使用道具 举报

 楼主| 发表于 2016-2-14 19:47 | 显示全部楼层
这个的确可以成为二维数,可惜不是brr=[A1:I1]、brr=[A2:I2]、brr=[A3:I3]……brr=[A9:I9]这种效果啊?计算时不是计完一行到下一行,而是【A1:I9】全部一起计算啊
即使我写成
sub celia()
for i= 1 to 9
brr=cells(i,1).resize(,9)
next
end sub
居然都无效
回复

使用道具 举报

 楼主| 发表于 2016-2-14 19:47 | 显示全部楼层
ghostjiao 发表于 2016-2-14 16:06
计算和维数有什么关系?

brr = Application.Transpose(Application.Index(arr, i))

这个的确可以成为二维数,可惜不是brr=[A1:I1]、brr=[A2:I2]、brr=[A3:I3]……brr=[A9:I9]这种效果啊?计算时不是计完一行到下一行,而是【A1:I9】全部一起计算啊
即使我写成
sub celia()
for i= 1 to 9
brr=cells(i,1).resize(,9)
next
end sub
居然都无效
回复

使用道具 举报

 楼主| 发表于 2016-2-14 19:47 | 显示全部楼层
上清宫主 发表于 2016-2-14 16:16
另:用Application.Index比老实用循环读取慢多了,太不划算。后面还要再transpose一下,感觉完全是兜圈子玩 ...

这个的确可以成为二维数,可惜不是brr=[A1:I1]、brr=[A2:I2]、brr=[A3:I3]……brr=[A9:I9]这种效果啊?计算时不是计完一行到下一行,而是【A1:I9】全部一起计算啊
即使我写成
sub celia()
for i= 1 to 9
brr=cells(i,1).resize(,9)
next
end sub
居然都无效
回复

使用道具 举报

发表于 2016-2-14 19:55 | 显示全部楼层    本楼为最佳答案   
不明白下一步你要操作什么,比如取brr(1,1)
  1. Sub Macro1()
  2. For i = 1 To 9
  3.     brr = Range(Cells(i, 1), Cells(i, "i"))
  4.     msgbox brr(1,1)
  5. Next
  6. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 02:38 , Processed in 0.399927 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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