2017-06-20 44 views
0

我寫了一個代碼,它創建了兩個範圍的副產品....但是我希望在計算副產品的參考範圍時更改最終答案使vba excel函數與參考單元格動態相關

p = 1 
For p = 1 To 12 
ActiveSheet.Cells(LastRow + 2, 31 + p).Formula = WorksheetFunction.SumProduct(Range(Cells(3, 31 + p), Cells(LastRow, 31 + p)), Range(Cells(3, 6 + p), Cells(LastRow, 6 + p))) 
Next p 

例如在上面的圖表中,sumproduct的結果顯示在lastrow + 2 th row和31到42列,但是當我更改參考單元格時,答案不會改變 如何使我的最終結果動態輸入

+1

使用'.Formula'您需要添加一個公式,就像您手動將其添加到Excel單元格中一樣,例如'.Formula(「= SumProduct(...)」)',以便Excel自動重新計算公式。要獲取範圍的地址並在公式中使用它,請使用[Range.Address方法](https://msdn.microsoft.com/en-us/library/office/ff837625.aspx)。 –

+0

我們如何循環使用這種表示形式..請幫助我。 –

+0

填入'p = 1'的公式,例如'Cells(LastRow + 2,32).Formula =「...」',之後將該單元格複製到其他單元格中將是一個簡單的方法,因此不需要循環:單元格(LastRow + 2,32).AutoFill目的地:=範圍(單元格(LastRow + 2,32),單元格(LastRow + 2,43))' –

回答

0

隨着.Formula你需要添加一個公式,就像你會手動添加它進入Excel單元格,如.Formula("=SumProduct(…)"),這樣公式就會被Excel自動重新計算。要獲得範圍的地址並在公式中使用它,請使用Range.Address method


而是一個循環只需填寫公式用於第一小區的p = 1

ActiveSheet.Cells(LastRow + 2, 32).Formula = "=SumProduct(" & Range(Cells(3, 32), Cells(LastRow, 32)).Address(False, False) & ", " & Range(Cells(3, 7), Cells(LastRow, 7)).Address(False, False) & ")" 

,然後自動填入該單元格右側進入他人(最多p = 12

ActiveSheet.Cells(LastRow + 2, 32).AutoFill Destination:=Range(Cells(LastRow + 2, 32), Cells(LastRow + 2, 43)) 

之後,如果您更改任何值,總和產品將自動重新計算。

+0

感謝您投入寶貴的時間 –

相關問題