瀏覽量:32次
下面的表,我們要使用VBA在C和D兩列分別自動輸入公式并得出計算結果。
要想自動寫公式,就得使用一個函數(shù),該函數(shù)是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[列偏移量]其中,行列都可以偏移,也都可以不偏移,如果給出數(shù)字,就說明一定偏移,如果不給出數(shù)據(jù),就說明不偏移;如果給出的是負數(shù),說明是往左或往上移,如果給出的是正數(shù),那么是往右或往下偏移。
比如,以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行偏移未給出參數(shù),說明行不變,都是第2行,而列分別都給出了偏移量,-2代表向左偏移兩個位置,即從C列向左偏移兩個位置,自然變成A列,那么,RC[-2]就變成A2,而-1代表向左偏移1個位置,由C列變成B列,那么,RC[-1]就變成B2了。
因此,C2單元格中的自動寫入的公式"=SUM(RC[-2]:RC[-1])"其實就相當于=SUM(A2:B2),這正是我們所需要的正確的公式。自動寫公式和RC偏移量,就給你分析到這里,已經(jīng)夠詳細了,其它的類似的,按此方法推理即可。
[聲明]本網(wǎng)轉載網(wǎng)絡媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點,本網(wǎng)不承擔此類稿件侵權行為的連帶責任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內容侵犯了您的版權,請您的相關內容發(fā)至此郵箱【779898168@qq.com】,我們在確認后,會立即刪除,保證您的版權。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776