在excel中用range方法生成的行或列数组均为二维数组,
1、行数组。如arr=sheet1.range("a1:c1"),这是一行三列的二维数组,用arr(1,1)、arr(1,2)、arr(1,3)均能获取数据,但如用arr(1)、arr(2)、arr(3)获取数组就会出错,提示“下标越界",若用arr(1,1)就会取到数据,所以用range生成的行数组是二维数组。具体情况可查看本地窗口,窗口中会显示arr是一行三列数组
2、列数组
如arr=sheet1.range("a1:a3"),这是三行一列的二维数组,用arr(1,1)、arr(2,1)、arr(3,1)均能获取数据,但如用arr(1)、arr(2)、arr(3)获取数组就会出错,提示“下标越界",若用arr(1,1)就会取到数据,所以用range生成的列数组是二维数组。具体情况可查看本地窗口,窗口中会显示arr是三行一列数组
3、range方法生成的二维行或列数组转成一维数组方法
(1)通用方法:用index函数
index函数参数格式,Index(arr,row,column)
当row=0时,表示arr二维数组把第column列的数据生成一组数组,当column=0时,表示arr二维数组把row行数据生成一维数组。index是worksheetFunction中的函数,故需加上库引用,把上例的行数组生成一维数组,如 WorksheetFunction.Index(arr, 1, 0) ,由于arr中只有一行数据,故row位置取1,column=0,代表column 按数组中的数据取,这样就生成了一维数据,同理,列数组生成一维数组如下:WorksheetFunction.Index(arr, 0, 1)
(2)列数组转置成一维行数
不用通用的index函数,也可用transpose()函数,该函数参数格式,transpose(arr),即可把列数组转成一维行数组。这里说的是转置,它对列数组,转置后可生成一维行数组,但它转置行数组时,转置后的列数组仍为二维数组。
列数组转置成一维行数组,arr=worksheetFunction.Transpose(arr),此时arr成了一维数组了。如再把一维转成列数组,转置后一定是二维列数组,如上面再来一次,arr=worksheetFunction.Transpose(arr),此时arr成一二维列数组。
标签:VBA,数组,转置,arr,二维,一维,range From: https://blog.csdn.net/weixin_43213909/article/details/143147102