调用vba_怎么在VBA中引用或者调用函数公式?

本文详细介绍了如何在VBA中引用和调用Excel的工作表函数和VBA内置函数。通过实例展示了如何直接引用公式、批量输入公式、使用数组公式以及调用特定函数,帮助读者更好地掌握在VBA中应用Excel函数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!

在日常工作中,Excel里面很多函数我们都用过,比如求和函数sum,sumif,计数函数count,countif。同样在VBA里面也有一些函数,我们称之为VBA函数,相对于VBA函数,我们经常在工作里面使用的函数称之为工作表函数

在写代码时,我们可以引用工作表函数,也可以直接使用VBA函数,但如果VBA函数不能实现某个目的而工作表函数却能轻松实现的情况之下,那要在代码中引用工作表函数。

下面我们来看下,如何引用工作表中的公式?

39f20a255533a9990ccb7bfb4f6eb3dc.png

以上图为例,

一、用VBA在F2中计算金额。

在工作表中使用公式,很简单,直接在F2中输入:

=B2*C2

在VBA中表达如下:

Sub 普通公式()Range("f2") = "=b2*c2"End Sub

等号后面直接双引号,双引号里公式和工作表里的公式一致,注意带等号。

二、如果是要一次性在F2:F8里输入公式呢?

这里要用到循环语句,正好复习前面讲过的内容

Sub 普通公式1()Dim x As IntegerFor x = 2 To 8Cells(x, 6) = "=b" & x & "* c" & xNext xEnd Sub

X是一个变量,代表行号,公式中用凡是文本与数字相连要用&符号,且文本必须用括号括起来。

这里我们用了cells,那可以用range吗?当然可以,只有这样举一反三我们才能真正掌握其写法:

Sub 普通公式2()Dim X As IntegerFor X = 2 To 8Range("f" & X) = "=b" & X & "* c" & XNext Xend sub 

跟上面的代码很相似,从这个例子中我们观察到了,比如,我用VBA写A2单元格,应该是range("A2"),A2要用双引号括起来,但如果引用的是A列的任意一个单元格,Ax,x为变量,那么写法就是range("A"&x),而不需要在此基础上再加双引号了,同样,后面跟的公式中含有变量时写法也是如此。

经过前面几节的内容,我们也逐步的认识到了VAB中单元格的两种表示方式:

1、range("具体的单元地址")

2、cells(行号,列号)

单元格的表示还有一种更简单的方法:[具体的单元格地址]

比如A1单元格,可以写成,range("a1"),cell(1,1),cell(1,"a"),[a1]

以上是直接引用工作表中的公式,公式中没有使用函数,如果公式中有函数,又该如何引用呢?

三、如果是要计算A产品的个数呢?

如果是在工作表里,我们直接

=COUNTIF(A2:A8,"A")

就可以了。

那VBA中会是怎么样的呢?

Sub 普通公式3()Range("D12") = "=COUNTIF(A2:A8,""A"")"End Sub

跟前面所讲的写法的区别在与,凡是原来公式里有引号的,在VBA中要多加一个引号。

前面两种情况,我们都了解了,一个是公式中没有函数的情况,一个是公式中有函数的情况。

四、那我们常用的数组公式,那个大括号,我们平常是按Crtl+Shift+Enter后自动加上去的,这种情况在VBA中怎么解决呢?

比如上例中:求金额之和,用数组公式是:

=SUM(B2:B8*C2:C8)

VBA中写法如下:

Sub 数组公式()Range("e10").FormulaArray = "=SUM(B2:B8*C2:C8)"End Sub

数组公式也是等号后面双引号里直接复制公式进去,不同在于,如果是数组公式,Range("e10")后要跟FormulaArray(表示数组公式)

五、以上是直接引用工作表中的函数公式如果在VBA中要调用工作表的函数直接获得值,语法如下(以计算A产品出现的次数为例):

Sub 调用公式()Range("D12") = Application.WorksheetFunction.CountIf(Range("A1:A8"), "A")End Sub

Application.WorksheetFunction.后面跟函数,并且函数的参数写法要按照VBA中的格式写,输入WorksheetFunction.后系统会自动弹出可以调用的工作表函数。

c899dfb5dfce16482a8bc2f794a2320c.gif

六、如果是使用VBA自己的函数,其语法如下:

假如A1中为-3,想在A2中得到A1的绝对值

Sub VBA函数()Range("A2") = VBA.Abs(Range("A1"))End Sub

VBA.后面直接跟VBA函数就可以。

本节的分享就到这里,鹏哥祝大家每天都有进步。

从基础操作到VBA,

两杯咖啡的钱,

换取一份如此详细的Excel视频资料,

你还在犹豫?

欲购从速,联系微信号:527240310

每天进步一点,每天提升一点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值