Arrays 为什么要创建二维数组-Excel VBA
下面是加载数组的代码行,数组的名称从列E开始,到前面循环确定的行中的姓氏。循环在最后一列计算。我想说的是,它应该看第一页,尽管开始这一页的按钮就在那一页上。不确定是否需要Arrays 为什么要创建二维数组-Excel VBA,arrays,excel,vba,Arrays,Excel,Vba,下面是加载数组的代码行,数组的名称从列E开始,到前面循环确定的行中的姓氏。循环在最后一列计算。我想说的是,它应该看第一页,尽管开始这一页的按钮就在那一页上。不确定是否需要 Dim AssociateNameArray As Variant AssociateNameArray = Worksheets(1).Range(Cells(1, 5), (Cells(1, LastColumn))).Value 这将创建一个二维数组,其中1,1具有第一个名称,1,2具有第二个名称,依此类推 如何修改
Dim AssociateNameArray As Variant
AssociateNameArray = Worksheets(1).Range(Cells(1, 5), (Cells(1, LastColumn))).Value
这将创建一个二维数组,其中1,1具有第一个名称,1,2具有第二个名称,依此类推
如何修改此选项,以便将范围内的数据放入一维数组?两种方式:
将数组换位两次
AssociateNameArray = Application.Transpose(Application.Transpose(Worksheets(1).Range(Worksheets(1).Cells(1, 5), Worksheets(1).Cells(1, LastColumn)).Value))
或循环二维数组并将其放入一维数组中:
Dim AssociateNameArray As Variant
AssociateNameArray = Worksheets(1).Range(Worksheets(1).Cells(1, 5), Worksheets(1).Cells(1, LastColumn)).Value
Dim newArr()
ReDim newArr(1 To UBound(AssociateNameArray, 2))
Dim i As Long
For i = 1 To UBound(AssociateNameArray, 2)
newArr(i) = AssociateNameArray(1, i)
Next i
转置对允许的项数有限制,但对于单行应该可以。第二种方法没有这样的限制
从技术上讲,可以循环范围并跳过2d数组,但这将是一个较慢的选项,因为任何时候代码打破工作表的面纱,都会减慢代码的速度。两种方式:
将数组换位两次
AssociateNameArray = Application.Transpose(Application.Transpose(Worksheets(1).Range(Worksheets(1).Cells(1, 5), Worksheets(1).Cells(1, LastColumn)).Value))
或循环二维数组并将其放入一维数组中:
Dim AssociateNameArray As Variant
AssociateNameArray = Worksheets(1).Range(Worksheets(1).Cells(1, 5), Worksheets(1).Cells(1, LastColumn)).Value
Dim newArr()
ReDim newArr(1 To UBound(AssociateNameArray, 2))
Dim i As Long
For i = 1 To UBound(AssociateNameArray, 2)
newArr(i) = AssociateNameArray(1, i)
Next i
转置对允许的项数有限制,但对于单行应该可以。第二种方法没有这样的限制
从技术上讲,可以循环范围并跳过2d数组,但这将是一个较慢的选项,因为任何时候代码打破工作表的面纱,都会减慢代码的速度。您可以循环范围1: 通常,向数组发送范围时,它会为行、列创建二维数组
1:正如@ScottCraner所指出的,这是一种较慢的方法。我只是想提一下,出于学术目的您可以在范围1中循环: 通常,向数组发送范围时,它会为行、列创建二维数组
1:正如@ScottCraner所指出的,这是一种较慢的方法。仅供学术参考FYI:是了解数组和范围的一个很好的资源。任何引用超过一个单元格的范围都会产生一个2D变体数组,这就是它的工作原理=注意仅供参考:这是了解数组和范围的一个很好的资源。任何引用超过一个单元格的范围都会产生一个2D变体数组,这就是它的工作原理=注意转置对于我正在做的工作来说非常有效。谢谢小心:这些不合格的单元格调用在合格的工作表中。范围调用每天都会导致错误1004。@MathieuGuindon专注于另一个问题,却忽略了这个问题。已经修好了。@Country_Gravy请看马修的评论和我的修改。此外,如果这对你有用,请通过点击复选标记来考虑正确的标记。转置对我所做的工作非常有效。谢谢小心:这些不合格的单元格调用在合格的工作表中。范围调用每天都会导致错误1004。@MathieuGuindon专注于另一个问题,却忽略了这个问题。已经修好了。@Country_Gravy请看马修的评论和我的修改。此外,如果这对你有用,请考虑通过点击复选标记正确的标记。