萬盛學電腦網

 萬盛學電腦網 >> Excel教程 >> excel綜合 >> VBA自動寫公式

VBA自動寫公式

   下面的表,我們要使用VBA在C和D兩列分別自動輸入公式並得出計算結果。

VBA自動寫公式 三聯

  要想自動寫公式,就得使用一個函數,該函數是FormulaR1C1。

  總之,自動寫公式的中文語法為:

  作為參照對象的單元格.FormulaR1C1 = "=公式名稱(R[行偏移量]:C[列偏移量]:R[行偏移量]:C[列偏移量])

  下面,我們就先給出上表的兩種自動寫公式的VBA代碼,分別如下:

  '第一種寫法

  For i = 2 To 5

  '總分公式

  Worksheets(1).Cells(i, 3).FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"

  '平均分公式

  Worksheets(1).Cells(i, 4).FormulaR1C1 = "=Average(RC[-3]:RC[-2])"

  Next i

  '第二種寫法

  For i = 2 To 5

  '總分公式

  Worksheets(1).Range("C" & i).FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"

  '平均分公式

  Worksheets(1).Range("D" & i).FormulaR1C1 = "=Average(RC[-2]:RC[-1])"

  Next i

  公式說明

  Worksheets(1).Cells(i, 3).FormulaR1C1或Worksheets(1).Range("C" & i).FormulaR1C1,代表的是參照對象的單元格。其中i是變量,如果i等於2,那麼:

  Worksheets(1).Cells(2, 3).FormulaR1C1代表的是第一個工作表的第2行第3列的單元格,即C2單元格。當然,Worksheets(1).Range("C" & 2).FormulaR1C1,指的也是C2單元格。

  另外,還有一個重要概念就是RC,比如RC[-2]:RC[-1]代表的是什麼意思呢?這在上面也提到過了,RC代表的是偏移量,R代表行,C代表列。到底偏移多少,那麼,必須以指定的單元格作為參照對象。其中的偏移量,可以使用這樣的方法來說明,如:

  R[行偏移量]:C[列偏移量] 其中,行列都可以偏移,也都可以不偏移,如果給出數字,就說明一定偏移,如果不給出數據,就說明不偏移;如果給出的是負數,說明是往左或往上移,如果給出的是正數,那麼是往右或往下偏移。

  比如,以C2單元格為參照對象(C2的位置為第2行第3列),那麼,通過 R[1]:C[-1] 之後,說明行向下移一行,變成第3行,而列的偏移為負1,說明向左偏移1行,則列變成2,因此,通過這樣的偏移後,那麼,就為B3單元格了。

  再比如,D6單元格,通過 R:C[3] 偏移之後(我們知道,行未給出偏移量,說明不變,而列的偏移量為3,說明向右偏移3),所得的結果為G6。

  最後,我們再回到公式,請看:

  Worksheets(1).Cells(i, 3).FormulaR1C1 = "=SUM(RC[-2]:RC[-1])" 假設i等於2

  那麼,Worksheets(1).Cells(i, 3).FormulaR1C1相當於Worksheets(1).Cells(2, 3).FormulaR1C1,即第一個工作表的第2行第3列的位置,正是C2單元格,以它為參照對象,那麼C2單元格的公式為:"=SUM(RC[-2]:RC[-1])"

  "=SUM(RC[-2]:RC[-1])" 這如何理解呢?這裡涉及到RC偏移,它是以C2單元格單元格為參照對象進行偏移的,我們從中看出,R行偏移未給出參數,說明行不變,都是第2行,而列分別都給出了偏移量,-2代表向左偏移兩個位置,即從C列向左偏移兩個位置,自然變成A列,那麼,RC[-2]就變成A2,而-1代表向左偏移1個位置,由C列變成B列,那麼,RC[-1]就變成B2了。

  因此,C2單元格中的自動寫入的公式"=SUM(RC[-2]:RC[-1])"其實就相當於=SUM(A2:B2),這正是我們所需要的正確的公式。自動寫公式和RC偏移量,就給你分析到這裡,已經夠詳細了,其它的類似的,按此方法推理即可。

copyright © 萬盛學電腦網 all rights reserved