Excel 2010 VBA单元格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 

尝试将值分配给临时variables时会引发错误。 我有一个怀疑,我的方法是无效的,但我似乎无法解决它。

谢谢!

在一行中

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)而是指出当前正在处于活动状态的任何表单。

第二点是你不能一次乘以整个数组(或者整个范围)。 你必须循环遍历元素并将它们分别乘以。 我select将范围加载到一个数组,然后循环,因为这样做比在一个范围内的单元循环快了几个数量级。 如果你只有10个单元,这个可能没有什么大不了,但是如果你有更多单元的话,这个可能就没有多大意义