我遇到了一个看似基本的问题,但找不到解决该问题的任何资源。简而言之,我只想将一个单元格范围(全部为一列)的内容加载到数组中。我能够通过DirArray = Array(Range("A1"), Range("A2"))但是由于某种原因,我无法以这种方式创建数组:DirArray = Array(Range("A1:A2"))我的实际Range更长(并且长度可能会有所不同),因此我不想以这种方式单独枚举单元格。谁能告诉我如何正确地将整个范围加载到数组中?使用后面的代码:MsgBox UBound(DirArray, 1)和MsgBox UBound(DirArray)返回0,而使用前者则返回1。
3 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
如果我们这样做的话:
Dim myArr as VariantmyArr = Range("A1:A10")
新数组将具有二维。使用它并不总是那么舒服:
为了摆脱两个维度,当将单个列放入数组时,我们可以使用内置的Excel函数“ Transpose”。有了它,数据就成为一维的:
如果我们连续有数据,则单个转置将无法完成任务。我们需要两次使用移调功能:
阿晨1998
TA贡献2037条经验 获得超6个赞
使用Value2
具有性能优势。根据查尔斯·威廉姆斯博客
Range.Value2与Range.Value的工作方式相同,除了它不检查单元格格式并转换为日期或货币。这就是为什么检索数字时它比.Value更快的原因。
所以
DirArray = [a1:a5].Value2
奖励阅读
Range.Value:返回或设置一个Variant值,该值表示指定范围的值。
Range.Value2:此属性和Value属性之间的唯一区别是Value2属性不使用Currency和Date数据类型。
- 3 回答
- 0 关注
- 733 浏览
添加回答
举报
0/150
提交
取消