第6节 函数与公式
我们在使用Excel的时候经常会用到很多自带函数或自定义函数,那么当在编写VBA的时候怎样使用这些函数呢?
一、在单元格中输入公式
1、用VBA在单元格中输入普通公式
Range('d2')= '=b2*c2'
这一句就是将B2和C2的乘积赋值给D2,写的时候不要忘记等号和双引号!引号里面的内容跟我们在单元格里输入公式的方法是一样的。
当然这种方式可以用循环来写很多单元格。
总体来说,这种方式就是我们在单元格中手动输入公式,我们可以在单元格里看到公式。
2、用VBA在单元格输入带引号的公式
如果我们需要输入的公式中本身就带有引号,那么,不管是单引号还是双引号,都要加倍。
Range('c16') = '=SUMIF(A2:A6,''b'',B2:B6)'
SumIf是我们在Excel中常用的一个函数,有条件的求和,即把符合条件的加起来,不符合的不加。
3、用VBA在单元格中输入数组公式
Range('c9').FormulaArray= '=SUM(B2:B6*C2:C6)'
Formula是公式的意思,Array是数组的意思,.FormulaArray就是数组公式。这句代码是B2*C2 B3*C3 …… B6*C6。关于数组,后续有专门的介绍。
以上几个方法都是相当于在单元格中输入各种公式的操作,我们可以在表格中看到公式,如果不想让别人看到你的计算过程,那么就要用下面几种方法了。
二、利用单元格公式返回值
在第一类方法的基础上加上Evaluate()函数即可,这个单词就是计算的意思。同样,不要忘记引号加倍!
Range('d16') = Evaluate('=SUMIF(A2:A6,''b'',B2:B6)')
Range('d9') = Evaluate('=SUM(B2:B6*C2:C6)')
三、借用工作表函数
Excel内置的函数就是工作表函数WorksheetFunction,它们就是我们在操作表格的时候常用到函数,在VBA中利用这些函数的时候需要用Application.WorksheetFunction。
Range('d8') = Application.WorksheetFunction.CountIf(Range('A1:A10'), 'B')
CountIf是把符合条件的计数,不符合的不计数,最终结果返回的是个数。
四、利用VBA函数
跟工作表函数对应的是VBA函数,这是VBA环境自带的函数,在使用的时候需要加上VBA.。
Range('C20') =VBA.InStr(Range('a20'), 'E')
InStr函数返回的是指定一字符串在另一字符串中最先出现的位置,具体用法可以参考帮助文件。
五、编写自定义函数
当我们遇到工作表函数和VBA函数都没有的工作时,可以自定义自己的函数,具体的写法跟Sub过程一样,只不过它用的Function,下面就是个例子,它用来获得当前工作表的名称。
到这里,你一定会非常困惑,哪些是工作表函数,哪些是VBA函数?如果有写好的当然执行效率高了,也省的我们费劲去写自己的了,这个需要我们参考帮助文件和MSDN帮助。
全部的函数说明参见下面的MSDN链接:
http://msdn.microsoft.com/en-us/library/bb259450(v=office.12).aspx
或者是
http://msdn.microsoft.com/en-us/library/bb225774(v=office.12).aspx
相关笔记请参阅:
联系客服