有时候我们需要将单元格区域的整行或整列内容作为一个整体进行操作的时候,可以考虑将其转化为数组。但是直接将单元格区域赋值给数组得到的是一个二维数组,这个二维数组的第一维是单元格区域的从上到下,也就行方向,第二维度是单元格区域的从左到右,也就是列方向,所有维度均以1为起始下标。
如下图所示:
Sub Savetime()
Dim arr()
Dim oWK As Worksheet
Set oWK = ActiveSheet
Dim oRng As Range
Set oRng = oWK.Range('a1:b10')
arr = oRng.Value
End Sub
如果需要依次将单元格区域的每行或每列都转化为一维数组,可以调用excel工作表函数Transpose将一个只有一行或只有一列的二维单元格区域转化为一维数组。
这里分两种情况:
一、如果是要将单元格区域的每列转化为一维数组,只需调用一次excel工作表函数Transpose即可,如下所示:
Sub T1()
Dim arr()
Dim arrTemp()
Dim oWK As Worksheet
Set oWK = Sheet1
Dim oRng As Range
'单元格区域的第一列
Set oRng = oWK.Range('a1:a5')
For i = 1 To 3
arr = oRng.Offset(0, i - 1).Value
'1次转置即可转化为一维数组
arrTemp = Excel.Application.WorksheetFunction.Transpose(arr)
Next i
End Sub
二、如果是要将单元格区域的每行转化为一维数组,需连续调用两次excel工作表函数Transpose才能转化为一维数组,如下所示:
Sub T2()
Dim arr()
Dim arrTemp()
Dim oWK As Worksheet
Set oWK = Sheet1
Dim oRng As Range
'单元格区域的第一行
Set oRng = oWK.Range('a1:c1')
For i = 1 To 3
arr = oRng.Offset(0, i - 1).Value
'2次转置才能转化为一维数组
arrTemp=Excel.Application.WorksheetFunction.Transpose(Excel.Application.WorksheetFunction.Transpose(arr))
Next i
End Sub
三、利用inputbox选择区域放入数组,如下所示:
这样貌似更灵活一些
联系客服