VBA数组与单元格区域

2025-05-19 13:24:04

1、单元格区域:指至少包含两个单元格的区域,单一单元格不属于单元格区域。如下图所示

VBA数组与单元格区域

3、一维垂直数组:指数组的值在Excel单元格区域中垂直输出,也就是按Excel行的方向输出。如下图所示

VBA数组与单元格区域VBA数组与单元格区域

6、由于将单元格区域转换为VBA数组时,产生的数组是二维数组,而内置的VBA数组函数都是针对一维数组,所以需要将二维数组降维转换为一维数组。

7、当将单列多行的单元格区域赋值给数组变量后,可以用Application.WorksheetFunction.Transpose转置降为一维水平数组。如下所示:Sub xyf() Dim arr() '以下语句产生二维的arr(1 to 8,1 to 1)数组 arr = Range("a1:a8") '通过转置降为一维的arr(1 to 8) 数组 arr = Application.WorksheetFunction.Transpose(arr)End Sub如下图所示

VBA数组与单元格区域

8、当将单行多列的单元格区域赋值给数组变量后,可以两次使用Application.WorksheetFunction.Transpose将数组降为一维水平数组。如下所示:Sub xyf() Dim arr() '以下语句产生二维的arr(1 to 1,1 to 3)数组 arr = Range("a1:c1") '通过两次转置降为一维的arr(1 to 3) 数组 arr = Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Transpose(arr))End Sub如下图所示

VBA数组与单元格区域

9、当将多行多列的单元格区域赋值给数组变量后,可以用Application.WorksheetFunction.Index函数的行参数将二维数组的每行转换为一维水平数组,如下所示:Sub xyf() Dim arr() Dim arrTemp() '以下语句产生二维的arr(1 to 5,1 to 3)数组 arr = Range("a1:c5") '定义一个与arr数组一维尺寸相同的一维数组变量用于存放提取出来的每行一维数组的结果 ReDim arrTemp(1 To UBound(arr)) For i = 1 To UBound(arr) 'Application.WorksheetFunction.Index函数的第二参数指定行数生成一维数组 arrTemp(i) = Join(Application.WorksheetFunction.Index(arr, i), ",") NextEnd Sub

10、Application.WorksheetFunction.Index函数将二维数组降维时,只有通过行参数才可以直接降维,通过列参数不能直接降维,如下所示:Sub xyf() Dim arr() Dim arrTemp() '以下语句产生二维的arr(1 to 5,1 to 3)数组 arr = Range("a1:c5") '生成一维数组(1 to 3) arrTemp = Application.WorksheetFunction.Index(arr, 1) '生成一维数组(1 to 3) arrTemp = Application.WorksheetFunction.Index(arr, 1, 0) '通过Index的列参数不能降维 , arrTemp还是二维数组(1 to 5,1 to 1) arrTemp = Application.WorksheetFunction.Index(arr, 0, 1)End Sub

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢