[英]Excel 2010 VBA cell math
我希望將一個值分配給一個基本上等同於我打字的范圍
在主工作表窗口的單元格B1中"=A1*2"
,然后將該功能拖動10次(所以B2=A2*2
B3=A3*2
,...,
Bn=An*2
With ThisWorkbook.Worksheets(sheetname)
Dim temp As Range, temp2 As Range
Set temp = Range(Cells(1, 1), Cells(10, 1))
Set temp2 = Range(Cells(1, 2), Cells(10, 2))
temp2.Value = temp.Value * 2
End With
當我嘗試將值賦給temp變量時拋出錯誤。 我懷疑我的方法無效,但我似乎無法修復它。
謝謝!
只是一行
ThisWorkbook.Worksheets(sheetname).Range("B1:B10").FormulaR1C1 = "=RC[-1]*2"
這就是我重寫代碼的方式,假設你想要值(這是你在問題中指定的)而不是公式:
Dim temp As Variant
Dim nRows As Long
Dim iRow As Long
Dim sheetname As String
sheetname = "Sheet1" 'or whatever
nRows = 10
With ThisWorkbook.Worksheets(sheetname)
temp = .Range(.Cells(1, 1), .Cells(nRows, 1)) 'Load range to a variant array
For iRow = 1 To nRows 'Loop through array to multiply elements by 2
temp(iRow, 1) = temp(iRow, 1) * 2
Next iRow
.Range(.Cells(1, 2), .Cells(nRows, 2)) = temp 'Write array back to range
End With
請注意,你必須說.Range
和.Cells
.
點。 如果你不這樣做,你就沒有正確地對待這些財產; 他們不會參考ThisWorkbook.Worksheets(sheetname)
而是指當前正在激活的任何工作表。
第二點是你不能一次乘以整個數組(或整個范圍)。 您必須循環遍歷元素並將它們單獨相乘。 我選擇將范圍加載到數組中,並循環顯示,因為這樣做比循環遍歷范圍的單元格要快幾個數量級。 如果你只有10個細胞,這可能無關緊要,但如果你還有更多的細胞肯定會有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.