有時(shí)候我們需要將單元格區(qū)域的整行或整列內(nèi)容作為一個(gè)整體進(jìn)行操作的時(shí)候,可以考慮將其轉(zhuǎn)化為數(shù)組。但是直接將單元格區(qū)域賦值給數(shù)組得到的是一個(gè)二維數(shù)組,這個(gè)二維數(shù)組的第一維是單元格區(qū)域的從上到下,也就行方向,第二維度是單元格區(qū)域的從左到右,也就是列方向,所有維度均以1為起始下標(biāo)。
如下圖所示:
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
如果需要依次將單元格區(qū)域的每行或每列都轉(zhuǎn)化為一維數(shù)組,可以調(diào)用excel工作表函數(shù)Transpose將一個(gè)只有一行或只有一列的二維單元格區(qū)域轉(zhuǎn)化為一維數(shù)組。
這里分兩種情況:
一、如果是要將單元格區(qū)域的每列轉(zhuǎn)化為一維數(shù)組,只需調(diào)用一次excel工作表函數(shù)Transpose即可,如下所示:
Sub T1()
Dim arr()
Dim arrTemp()
Dim oWK As Worksheet
Set oWK = Sheet1
Dim oRng As Range
'單元格區(qū)域的第一列
Set oRng = oWK.Range('a1:a5')
For i = 1 To 3
arr = oRng.Offset(0, i - 1).Value
'1次轉(zhuǎn)置即可轉(zhuǎn)化為一維數(shù)組
arrTemp = Excel.Application.WorksheetFunction.Transpose(arr)
Next i
End Sub
二、如果是要將單元格區(qū)域的每行轉(zhuǎn)化為一維數(shù)組,需連續(xù)調(diào)用兩次excel工作表函數(shù)Transpose才能轉(zhuǎn)化為一維數(shù)組,如下所示:
Sub T2()
Dim arr()
Dim arrTemp()
Dim oWK As Worksheet
Set oWK = Sheet1
Dim oRng As Range
'單元格區(qū)域的第一行
Set oRng = oWK.Range('a1:c1')
For i = 1 To 3
arr = oRng.Offset(0, i - 1).Value
'2次轉(zhuǎn)置才能轉(zhuǎn)化為一維數(shù)組
arrTemp=Excel.Application.WorksheetFunction.Transpose(Excel.Application.WorksheetFunction.Transpose(arr))
Next i
End Sub
三、利用inputbox選擇區(qū)域放入數(shù)組,如下所示:
這樣貌似更靈活一些
聯(lián)系客服