evaluate函数使用无效_VBA学习笔记5:函数与公式

学习资源:《Excel VBA从入门到进阶》第六讲 函数与公式 by蓝色幻想

一、在单元格中输入公式

1、用VBA在单元格中输入普通公式

32ac6e89e8ecdbdbb8c149ca03a0a68b.png
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在单元格输入带引号的公式

c21fb2446e472ca1e988cd4def1a1e9f.png
Sub t3()
     
Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍
     
End Sub

3、用VBA在单元格中输入数组公式

已知物品a,b,c,e分别的数量和单价,求物品a,b,c,e的总金额。

e4da4051ce2ff93c9aca65826e943c73.png
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直接返回计算值,不显示公式)

c994583e80ef96a95b8866639101b9b8.png
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单元格。

818ccca253287940dcbf42ad40765225.png
Sub t6()
        
Range("A7") = Application.WorksheetFunction.CountIf(Range("A1:A6"), "b")
        
End Sub 

不记得函数名的话,可以先输入WorksheetFunction.就会弹出函数下拉选择框。

14e3aa8928f4684a60e95231e15ce736.png

四、利用VBA函数

看A20中的E在第几位,先看看在excel中是怎么处理的:

892f8ea54a9428b4348a749fdd8b1c16.png

用VBA的InStr函数计算:

Sub t7()
     
    Range("C20") = VBA.InStr(Range("a20"), "E")

End Sub

VBA函数和工作表函数一般不一样,要注意。和工作表函数一样,可以先输入VBA.就会弹出下拉选择框。

9da9de9b2ffee2ae122de65c467eafb4.png

五、编写自定义函数

Function 函数名()

函数名 = 表达式

End Function

自定义一个可以返回当前工作表名称的函数,让工作表可以直接调用。

c711a1f4bd3807aab7d46abdb97295c9.png
Function wn()

wn = Application.Caller.Parent.Name

End Function
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值