一, 在單元格中輸入公式的3種方法:
????1) 用VBA在單元格中輸入普通公式
Sub formula_1() Range("d2") = ("=B2 * C2") End Sub
運行程序后,在D2的單元格內顯示的是公式 =B2 * C2 ,并非程序返回值.下文(二)中會介紹另外一種直接返回值的方式
????想要通過程序一次計算完所有D列金額,只要運行上一篇文章循環語句,即可一次性完成計算. 具體代碼如下:
Sub fomula_t2() Dim x As Integer For x = 2 To 4 Cells(x, 4) = "=b" & x & "*" & "c" & x Next x End Sub
? ? 2)用VBA在單元格中輸入帶引號的公,以Sumif公式舉例,函數Sumif參數:(Range,Criteria,sum_rangge)即(判斷范圍,判斷條件,求和區域). 其中判斷條件可以為單元格也可以是文本,而文本在函數參數中是需要加上引號的.?
在單元格用公式的方式實現方式:
?? 如果需要用VBA代碼的方式實現 , 需要特別主要的是:公式中用到引號的地方,VBA代碼中需要使用雙重引號 ?: 見下放代碼中的""刀輪""
Sub fumula_t3() Range("B10") = "= sumif(A2:A5,""刀輪"",d2:d5)" End Sub
????3)在Excel中我們時常會使用到數組來幫助計算, 使用數組的方式計算上圖中的D列合計金額計算方法: = sum(B2:B5 * C2:C5).
???? ? *Excel小知識: 特別注意在計算前需要首先選中D2:D5,然后輸入公式.最后同時按下Ctrl + Shift + Enter
???? ?如果使用VBA的方式,則需要調用一個Range新的屬性Formulaarray可實現相同的效果:
Sub formula_t4() Range("D2").FormulaArray = "=sum(B2:B6 * C2:C6)" End Sub
-----------------------------------
二,利用單元格公式返回值,不顯示公式
? ? 在公式之前加上Evaluate后, 單元格只顯示公式的返回值,而不會顯示公式.
Sub formula_1() Range("d2") = Evaluate("=B2 * C2") End Sub
------------------------------------
三,調用Excel公式
? ??調用方法:Application.worksheetfunction
? ? 注意事項:單元格表示方式與公式不同, 上述方法的單元格表示方式均為單元格加引號("D2"),如果使用調用的方式,則需要表示為range("D2") ??
Sub fomula_t6() Range("b10") = Application.WorksheetFunction.Sum(Range("d2:d5")) End Sub
-------------------------------
四,調用VBA函數
????VBA函數與工作表函的數有一些重疊的部分,有些功能類似但是參數的順序不同.鑒于函數太多,大家在使用的時候可以通過F1查看幫助以便更好地使用.這里我們只說明一下調用地方法. 我們使用VBA.Instr 函數舉例,實現在C9單元格中顯示"金"字在B9單元格中首次出現地位置
Instr:指定一個字符串在另一個字符串中首次出現的位置 ,?
Sub fomula_t7() Range("C9") = VBA.InStr(Range("B9"), "金") End Sub
運行后,得到地結果是 3.
除了以上4中方法,還有一個就是自定義函數了,這部分我們在后面的Function功能會再次重點講解,這里就不再贅述了~
關鍵字: 雙引號 , Formulaarray , evaluate , worksheetfunction?, VBA函數
今天的內容就是這些了,快動手試一試吧~