Arrays 在Excel VBA中使用一维或二维数组
我有几个关于在VBA中使用数组的基本问题,我还没有找到答案 首先,是否有方法在Excel VBA中指定一维行向量 我不熟悉在Excel VBA中使用数组,并且一直将行和列向量定义为二维数组,如下例所示Arrays 在Excel VBA中使用一维或二维数组,arrays,vba,excel,vector,Arrays,Vba,Excel,Vector,我有几个关于在VBA中使用数组的基本问题,我还没有找到答案 首先,是否有方法在Excel VBA中指定一维行向量 我不熟悉在Excel VBA中使用数组,并且一直将行和列向量定义为二维数组,如下例所示 'Define a Local Row Vector ReDim aArray(1 to iCntRows, 1 to 1) 'Define a Local Column Vector ReDim aArray(1 to 1, 1 to iCntCols) 第二,这是最佳实践吗?我应该使用一维
'Define a Local Row Vector
ReDim aArray(1 to iCntRows, 1 to 1)
'Define a Local Column Vector
ReDim aArray(1 to 1, 1 to iCntCols)
第二,这是最佳实践吗?我应该使用一维数组吗
谢谢
Tim用于将数组复制到某个范围,如
Range(somerange) = aArray
然后,是的,使用二维数组您必须使用转置函数从二维数组进行转换
new_array = Application.Transpose(Sheet1.Range("A2:A100").Value)
新数组是一维数组。为什么要对一行/一列使用二维数组?因为Excel范围是二维的。我想这就是我开始使用它们的原因!谢谢Chris,我经常将工作表范围读入数组,对其进行操作并将其写回工作表。但是,我还在程序中使用2d数组,该程序仅从工作表中读取范围,以操纵其他数组。你会将这些存储为1d数组吗?嗨,Tim,你介意添加一些注释来解释你的过程在做什么吗?我不知道从中可以学到什么。谢谢,TimYou询问了使用1D阵列的问题。我的例子只是为了说明如何使用它们,一个需要注意的问题(1D数组在被分配到柱形范围之前需要进行转置),谢谢Tim,非常感谢!
Sub tt()
Const SZ As Long = 1000
Dim arr(), x
ReDim arr(1 To SZ)
For x = 1 To SZ
arr(x) = x
Next x
'add to sheet (as a row)
Sheet1.Range("a1").Resize(1, SZ).Value = arr
'add to sheet (as a column)
'note there is an upper limit when using transpose of around 65k
Sheet1.Range("a5").Resize(SZ, 1).Value = Application.Transpose(arr)
End Sub