Excel精英培训网

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

[已解决]数组的是赋值给单元格的疑问

[复制链接]
发表于 2017-8-29 11:00 | 显示全部楼层 |阅读模式
  1. For r = 1 To UBound(arr)
  2.        Sheet1.Cells(r + 1, 1) = arr(r)
  3.     Next r
  4.     为什么上面的代码和下面的代码得到的结果不一致?
  5.     Sheet1.Range("a2:a" & UBound(arr)) = arr
复制代码


最佳答案
2017-8-29 13:46
本帖最后由 AmoKat 于 2017-8-29 15:36 编辑

arr 為一維陣列(也就是 一維水平組數),要用 Application.Transpose() 轉為垂直組數才能填入垂直儲存格。

Sheet1.Range("a2:a" & UBound(arr) ) = arr
改為
Sheet1.Range("a2:a" & UBound(arr) - LBound(arr) + 2) = Application.Transpose(arr)

Sheet1.Range("B2").Resize(UBound(arr) - LBound(arr) + 1) = Application.Transpose(arr)


发表于 2017-8-29 13:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 AmoKat 于 2017-8-29 15:36 编辑

arr 為一維陣列(也就是 一維水平組數),要用 Application.Transpose() 轉為垂直組數才能填入垂直儲存格。

Sheet1.Range("a2:a" & UBound(arr) ) = arr
改為
Sheet1.Range("a2:a" & UBound(arr) - LBound(arr) + 2) = Application.Transpose(arr)

Sheet1.Range("B2").Resize(UBound(arr) - LBound(arr) + 1) = Application.Transpose(arr)


评分

参与人数 1 +6 收起 理由
大灰狼1976 + 6 赞一个

查看全部评分

回复

使用道具 举报

发表于 2017-8-29 11:15 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-8-29 11:48 | 显示全部楼层
大灰狼1976 发表于 2017-8-29 11:15
Lbound(arr)是不是等于0?

LBound(arr)=1
回复

使用道具 举报

发表于 2017-8-29 11:50 | 显示全部楼层
那就不好判断了,把附件发上来。
回复

使用道具 举报

发表于 2017-8-29 11:51 | 显示全部楼层
Sheet1.Range("a2:a" & UBound(arr)) = arr
改成
Sheet1.Range("a2:a" & UBound(arr)+1) = arr
因为从a2开始,所以要多加一行。
回复

使用道具 举报

发表于 2017-8-29 14:59 | 显示全部楼层
AmoKat 发表于 2017-8-29 13:46
arr 為一維陣列(也就是 一維水平組數),要用 Application.Transpose() 轉為垂直組數才能填入垂直儲存格。
...

竟然没看出这个基本的问题,惭愧!
回复

使用道具 举报

发表于 2017-8-29 15:41 | 显示全部楼层
大灰狼1976 发表于 2017-8-29 14:59
竟然没看出这个基本的问题,惭愧!

你言重了! 看你樂於回答助人甚多,偶而總有小失誤不必棄美。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 08:13 , Processed in 1.274363 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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