VBA学习笔记5:函数与公式
学习资源:《Excel VBA从入门到进阶》第六讲 函数与公式 by蓝色幻想
一、在单元格中输入公式
1、用VBA在单元格中输入普通公式
Sub t1()
Range("d2") = "=b2*c2"
End Sub
或
Sub t2()
Dim x As Integer
For x = 2 To 6
Cells(x, 4) = "=b" & x & "*c" & x
Next x
End Sub
2、用VBA在单元格输入带引号的公式
Sub t3()
Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍
End Sub
3、用VBA在单元格中输入数组公式
已知物品a,b,c,e分别的数量和单价,求物品a,b,c,e的总金额。
Sub t4()
Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)"
End Sub
FormulaArray:
Range对象的FormulaArray属性返回或设置单元格区域中的数组公式。若指定的单元格区域没有包含数组公式,该属性返回null。
说明 :如果使用该属性输入数组公式,那么公式必须使用R1C1引用样式。FormulaArray属性有255个字符的限制。
不使用VBA的话,可直接在单元格输入公式=SUM(B2:B6*C2:C6),然后按按Ctrl Shift Enter组合键,即输入数组公式。
二、利用单元格公式返回值
统计b的总数量。
解题思路:先找出b的数量→有两行b→把数量相加。(利用Evaluate直接返回计算值,不显示公式)
Sub t5()
Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)")
Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")
End Sub
三、借用工作表函数
用Application.WorksheeFunction.CountIf(range,criteria)算出b的数量,填在A7单元格。
Sub t6()
Range("A7") = Application.WorksheetFunction.CountIf(Range("A1:A6"), "b")
End Sub
不记得函数名的话,可以先输入WorksheetFunction.就会弹出函数下拉选择框。
四、利用VBA函数
看A20中的E在第几位,先看看在excel中是怎么处理的:
用VBA的InStr函数计算:
Sub t7()
Range("C20") = VBA.InStr(Range("a20"), "E")
End Sub
VBA函数和工作表函数一般不一样,要注意。和工作表函数一样,可以先输入VBA.就会弹出下拉选择框。
五、编写自定义函数
Function 函数名()
函数名 = 表达式