簡體   English   中英

Excel 2010 VBA單元格數學

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM