EXCEL自定义函数

在工作中有时会遇到在编写公式时,找不到适合的EXCEL内置函数,或者虽然可以使用内置函数,但会造成公式复杂不易理解,这时就可以考虑使用自定义函数了。
编写自定义函数需要一定的VBA基础,但完成后,就可以像使用内置函数一样方便了,任何人都可以使用。

步骤/方法

  • 01

    下面通过一个例子来学习简单的编写自定义函数

  • 02

    例:下面表格中需要计算一些三角形的面积

  • 03

    B列是底边长,C列是高,要求在D列通过公式计算三角形面积。

  • 04

    (通常我们会在D3单元格用公式 =B3*C3/2 来计算,然后把这个公式向D列下方拖动复制,得到其他公式。这只是一个简单的例子,通过它来学习编写简单的自定义函数)

  • 05

    1、打开VBA窗口 按ALT+F11调出VBA窗口,插入一个用户模块。

  • 06

    2、编写代码 通常自定义函数是用function命令开始的,在这个命令后面给它指定一个名字和参数 把下面这个自定义函数代码粘贴到刚插入的用户模块中就可以使用了。 Function sjxmj(di, gao) sjxmj = di * gao / 2 End Function 这段代码非常简单只有三行,先看第一行,其中sjxmj是自己取的函数名字,括号中的是参数,也就是变量,di表示“底边长”,gao表示“高”,两个参数用逗号隔开。 再看第二行,这是计算过程,将di*gao/2这个公式赋值给sjxmj,即自定义函数的名字。 再看第三行,它是与第一行成对出现的,当你手工输入第一行的时候,第三行的end function就会自动出现,表示自定义函数的结束。

  • 07

    3、使用自定义函数 回到EXCEL窗口,我们在D3单元格中输入公式 =sjxmj(b3,c3) ,就会得到这一行的三角形面积了,它的使用方法同内置函数完全一样。

  • 08

    通过上面例子可以了解自定义函数的编写和使用方法,下面再介绍一个稍微复杂点的自定义函数。 经常对数据进行处理的朋友可以会遇到多条件查找某一个数据,一般这种情况需要编写“数组公式”来解决,公式较长,也不易理解。 比如下面统计成绩的表格,需要根据A1:D7的成绩表,统计出两门功能都在90分以上的学生人数。 大家可以看到在H3单元格中的公式比较长,理解起来也有一定难度。 我们通过自定义函数也可以得到正确结果,函数代码如下: Function 统计(a, b, c, d, e) For i = 1 To a.Rows.Count If b = a.Cells(i, 1) And a.Cells(i, c) >= e And a.Cells(i, d) >= e Then 统计 = 统计 + 1 End If Next End Function 这个函数用了五个参数(因为涉及到一个区域和四个条件) 参数a表示要统计的区域,在此例中为B2:E7 参数b表示要统计的是哪一个班级,在此例中为G3单元格 参数c表示数学成绩相对于区域第一列向右的列数,在此例中为3 参数d表示数学成绩相对于区域第一列向右的列数,在此例中为4 参数e表示分数,在此例中为90分 提示:要注意参数c和d“相对”于“区域”的列数,并非是从A列开始向右的列数。 把上面这段代码也粘贴到用户模块中就可以使用了 回到EXCEL窗口,在H3单元格中输入公式 =统计($B$2:$E$7,G3,3,4,90) 就可以显示正确结果了。 Function 统计2(a, b) For i = 1 To a.Rows.Count If b = a.Cells(i, 1) And a.Cells(i, 3) >= 90 And a.Cells(i, 4) >= 90 Then 统计 = 统计 + 1 End If Next End Function 在表格中的H3单元格中输入公式 =统计2($B$2:$E$7,G3) 就可以了。 从上面可以看出,自定义函数可以使用“汉字”做为函数的名字,方便记忆,也可以根据实际情况对参数进行简化。

  • 09

    通常这种时候需要在H3单元格使用数组公式 =SUM(IF(($B$2:$B$7=G3)*($D$2:$D$7>=90)*($E$2:$E$7>=90),1,0))

  • 10

    提示: 如果我们的成绩表格式是固定的,各科目成绩位置相对于区域也是固定的,而且要统计的分数也是固定的90分,就可以在自定义函数中将参数的数量减少到两个,如下:

(0)

相关推荐

  • 万事不求人 教你用Excel自定义函数

    Excel中内置了很多函数,可以解决很多问题.不过Excel是针对所有人使用的,对于个人一些特殊的需求有时就找不到合适的函数公式.幸运的是,Excel可以自己定制函数,从而有针对性地解决个人问题. 默 ...

  • Excel用自定义函数倒读单元格文本

    前些天收到朋友一个短信,将一段祝福的话倒序发了过来。虽然读起来挺费劲,但是却十分个性化。在这个短信的启发下,咱也想个性化一把,把写好的邮件也给“倒”过来,想来发出去必也有好的效果。不过,如果是倒序录入 ...

  • 提取Excel不重复值的自定义函数方案

    提取Excel不重复值的自定义函数方案,Function MergerRepeat(Index As Integer, ParamArray arglist() As Variant) ------- ...

  • excel中如何自定义函数

    Excel函数虽然丰富,但并不能满足我们的所有需要。我们可以自定义一个函数,来完成一些特定的运算。下面,我们就来自定义一个计算梯形面积的函数: 1、执行“工具→宏→Visual Basic编辑器”菜单 ...

  • 在Excel中自定义函数

    Excel函数虽然丰富,但并不能满足我们的所有需要.我们可以自定义一个函数,来完成一些特定的运算.下面,我们就来自定义一个计算梯形面积的函数: 1.执行"工具→宏→Visual Basic编 ...

  • Excel如何自定义函数

    Excel可以自己定制函数,从而有针对性地解决个人问题. 默认情况下,Excel 2016并不显示"开发工具"选项,需要进入"文件→选项→自定义功能区",再在右 ...

  • Excel怎样自定义函数

    Excel中有很多的内置函数,单独利用这些函数或函数嵌套可解决绝大多数计算.提取.逻辑.判断等方面的问题,但有时候会遇到一些特殊的情况,内置函数没法解决,这时可自定义函数,具体方法小编和大家分享下. ...

  • 怎么在Excel中创建自定义函数

    Excel中的函数往往不能满足所有可能出现的情况,于是我们有时需要自己创建函数来完成特定的功能.今天小编就与大家一起分享一下如何在Excel中创建自定义函数并且应用到Excel表格中,希望对大家能有所 ...

  • 工作中用Excel中自定义函数

    操作方法 01 Excel 函数虽然丰富,但并不能满足我们的所有需要.我们可以自定义一个函数,来完成一些特定的运算.下面,我们就来自定义一个计算梯形面积的函数: 1.执行 "工具→宏→Vis ...