請問您可以如何將Excel範圍(「G2:AA1000」)分配給2D陣列?如果可能的話,在該二維數組上執行一些操作後,如何將該二維數組返回到相同範圍?將範圍賦值給二維數組後,將如何從該二維矩陣中識別每一行?如何將Excel範圍分配給2D數組?
謝謝,通過一系列循環
請問您可以如何將Excel範圍(「G2:AA1000」)分配給2D陣列?如果可能的話,在該二維數組上執行一些操作後,如何將該二維數組返回到相同範圍?將範圍賦值給二維數組後,將如何從該二維矩陣中識別每一行?如何將Excel範圍分配給2D數組?
謝謝,通過一系列循環
有一種簡單的方法可以使用數組對某個區域進行更改,並將其寫出到相同的地方或其他地方。
此示例代碼將從一個區域到另一個複製數據,使用陣列:
Sub example()
Dim testdata()
testdata = Range("A1:B13")
Range("D1:E13") = testdata ' simple copy
Range("G1") = testdata ' copy only 1 cell
Range("I1:K22") = testdata 'try to copy too much
End Sub
的testdata
陣列從開始,將延伸到的範圍內指定的列和行數。在這種情況下,testdata(1,1)
是指從A1獲得的數據,testdata(1,2)
指B1,與testdata(13,1)
參照A13,和testdata(13,2)
參照B13整理起來。
設置範圍等於下一行中的數組將數組複製到指定的位置。
Range("D1")=testdata
將只在該工作表上放置一個單元格。Range("A1:A3")=testdata
將填充來自數組的數據的A1和A2,但A3將具有#N/A結果示例程序:
注:A1:B13是原始數據,而它與隨後range(??)=testdata
的一種方法是使用與小區物業的For ... Next循環。使用Cells屬性,可以將循環計數器(或其他變量或表達式)替換爲單元格索引號。在下面的例子中,變量計數器代替了行索引。該過程在範圍C1:C20中循環,將其絕對值小於0.01的任何數字設置爲0(零)。
Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub
我不是找這個複製!我正在尋找可以通過單一語句完成的任務!和'Range(「G2:AA1000」)'應該看起來像這樣,不僅僅是一列! –
爲什麼你使用'0.01'的價值,想知道邏輯 - 內涵是什麼? –
下面是一個從工作表中讀取一系列數據,操作數組,然後將其寫回到同一工作表的解決方案示例。
Sub RangeArray()
Dim Rng As Range
Dim Arr()
Dim ArrItem
Dim i As Long, j As Long
Dim rUB as Long, cUB as Long
Set Rng = Worksheets("Sheet1").Range("A1:G19")
rUB = Rng.Rows.Count 'Row upper bound
cUB = Rng.Columns.Count ' Column upper bound
ReDim Arr(1 To rUB, 1 To cUB)
'Read worksheet range into array
For i = 1 To rUB
For j = 1 to cUB
Arr(i, j) = Rng.Cells(i, j).Value
Next
Next
'Do something to array
For i = 1 To rUB
For j = 1 To cUB
If i <> j Then
Arr(i, j) = Arr(i, j)/(i * j)
End If
Next
Next
'Write array back to worksheet
Set Rng = Worksheets("Sheet1").Range("I1")
For i = 1 To rUB
For j = 1 To cUB
Rng.Offset(i - 1, j - 1).Value = Arr(i, j)
Next
Next
End Sub
是否有可能沒有循環? –
其實,是的,@Tukai。使用數組是一個古老的習慣。這也可以工作: Sub RangeArray() Dim A() A = Sheet1.Range(「A1。G19「) '用數組做什麼 Sheet1.Range(」i1.i19「)。Value = A End Sub – chuff
可以請你給我一個投票嗎? –
不錯的解釋,但最後兩點並不太清楚。 '#N/A'是什麼? –
**#N/A **是在沒有可用信息時由excel產生的錯誤。請參見[wikipedia]上的第一個定義(https://en.wikipedia.org/ wiki/N/a) – SeanC
我不清楚still.Any圖形演示文稿可以有道理我認爲是這樣的! –