在Excel中,我們經(jīng)常使用各種各樣的公式來(lái)進(jìn)行數(shù)據(jù)的計(jì)算分析和處理,在VBA中也不例外,。本文將介紹VBA中使用公式的相關(guān)屬性。 為了更好地使用公式,讓我們先看看Excel中的A1引用樣式和R1C1引用樣式,,再來(lái)介紹VBA中與使用公式相關(guān)的屬性,。
理解A1引用樣式和R1C1引用樣式 Excel默認(rèn)設(shè)置為A1樣式引用,也就是我們熟悉的行以數(shù)字表示,列以字母表示,。例如,,A1表示工作表或者單元格區(qū)域左上角的單元格。 Excel還可以設(shè)置為R1C1樣式引用,,行列都以數(shù)字表示,。例如,使用R1C1表示工作表左上角的單元格,。此時(shí),,需要調(diào)出“Excel選項(xiàng)”對(duì)話框,勾選“R1C1引用樣式”,。 在下面的工作表中,,我們使用了計(jì)算公式。其中,,
我們就以這張工作表來(lái)分析理解A1樣式和R1樣式,。
使用A1樣式公式如下圖: 通常,我們?cè)趩卧裰休斎牍胶?,往下拉即可?fù)制公式,。例如,在單元格E2中輸入公式=C2*D2,,下拉至單元格E7,,Excel會(huì)自動(dòng)調(diào)整單元格相對(duì)引用并快速得出列E中的結(jié)果,列F,、列G中也類似,。但列F中的單元格I2不變,因?yàn)槲覀兪褂昧私^對(duì)引用,,即在行或列前加了$符號(hào),。
使用R1C1樣式公式如下圖: 可以看出,第5列,、第6列,、第7列中每列的公式都是相同的。也就是說(shuō),,整個(gè)區(qū)域都可以使用同樣的公式,。 R1C1樣式中,字母R代表行,,字母C代表列,,字母后面的方括號(hào)代表相對(duì)引用。字母R后面的方括號(hào)中的數(shù)字代表相對(duì)于當(dāng)前單元格移動(dòng)的行數(shù),,負(fù)數(shù)表示向上移動(dòng),,正數(shù)表示向下移動(dòng),。字母C后面的方括號(hào)中的數(shù)字代表相對(duì)于當(dāng)前單元格移動(dòng)的列數(shù),負(fù)數(shù)表示向左移動(dòng),,正數(shù)表示向右移動(dòng),。例如,如果當(dāng)前單元格D5中輸入=R[1]C[-1],,則引用的單元格為C6,。 若字母R或C后面就是數(shù)字,沒(méi)有方括號(hào),,則表示引用為絕對(duì)單元格,。例如,=R3C2引用單元格B3,,不管當(dāng)前單元格處在哪里,。 若字母R或C后面既沒(méi)有方括號(hào)也沒(méi)有數(shù)字,則表示引用與當(dāng)前單元格相同的行或列,。
為了更好地理解,,下圖演示了一些A1樣式和R1C1樣式的相對(duì)引用和絕對(duì)引用的例子。
在VBA中,,Range對(duì)象的Formula屬性和FormulaR1C1屬性可以讓我們分別使用A1樣式和R1C1樣式的公式,。
認(rèn)識(shí)Formula屬性 我們通過(guò)一些簡(jiǎn)單的示例來(lái)認(rèn)識(shí)Range對(duì)象的Formula屬性。 例如,,對(duì)于下面的工作表,,要求在單元格C1中放置單元格區(qū)域A1:A5中的數(shù)值之和。代碼如下: 結(jié)果如下圖所示,。從編輯欄可以看出,,VBA代碼在單元格C1中放置了公式:=SUM($A$1:$A$5),該公式執(zhí)行相應(yīng)的求和并得到結(jié)果,。 如果要求在單元格區(qū)域C1:C5中的每個(gè)單元格中都放置單元格區(qū)域A1:A5中的數(shù)值之和,,那么只需要將上面的代碼中的引用區(qū)域Range(“C1”)修改為Range(“C1:C5”)。代碼如下: 結(jié)果如圖下圖所示:
認(rèn)識(shí)FormulaR1C1屬性 在上面的示例中,,使用FormulaR1C1屬性,,也能達(dá)到相同的效果。例如,,代碼: 在單元格D1中放置對(duì)單元格區(qū)域A1:A5中的數(shù)值求和的結(jié)果,,如下圖所示。 我們注意到,,在單元格D1中顯示的公式與前面使用Formula屬性顯示的公式相同,,這是為什么呢?因?yàn)?/span>Excel默認(rèn)設(shè)置為A1引用樣式,。
但是在錄制宏時(shí),,宏錄制器會(huì)以R1C1樣式來(lái)錄制輸入的公式,。例如,對(duì)于上面的工作表,,當(dāng)前單元格為C1,并在該單元格中輸入公式=SUM($A$1:$A$5)求單元格區(qū)域A1:A5中的數(shù)值之和,。我們使用宏錄制器錄制上述操作,,代碼如下:
為什么要在VBA中使用R1C1樣式的公式 至少有以下三個(gè)原因:
下面舉例說(shuō)明,。
在本文開頭的工作表中,,我們使用Excel公式計(jì)算相應(yīng)的數(shù)據(jù)。現(xiàn)在,,我們理解了A1引用樣式和R1C1引用樣式,,以及Formula屬性和FormulaR1C1屬性后,使用VBA程序來(lái)計(jì)算表中的數(shù)據(jù)(見下圖中紅色陰影部分),。 使用A1樣式的公式,,程序代碼如下: 使用R1C1樣式的公式,,程序代碼如下:
下面是兩段程序的執(zhí)行過(guò)程視頻:
可以看出,在某一區(qū)域中使用R1C1樣式的公式,,只需一個(gè)公式,,即可對(duì)其進(jìn)行全部計(jì)算,非常靈活,,代碼也更簡(jiǎn)潔,。 再看下面的例子,我們需要在第11行計(jì)算合計(jì)分,。 使用R1C1樣式的公式,,只需一句代碼即可完成: 如果您對(duì)本文介紹的內(nèi)容還有什么好的示例,歡迎發(fā)送郵件給我:[email protected] 也可以在本文下方留言,,提出您的看法或建議,。 本文屬原創(chuàng)文章,轉(zhuǎn)載請(qǐng)聯(lián)系我或者注明出處,。
|
|