Excel 如何创建自定义函数

您所在的位置:网站首页 excel插入指数函数 Excel 如何创建自定义函数

Excel 如何创建自定义函数

2024-07-14 22:34| 来源: 网络整理| 查看: 265

Excel 如何创建自定义函数 Microsoft Excel 中用户定义函数介绍

众所周知,Microsoft Excel 已经提供了一些内置函数,使我们在分析数据时生活变得非常轻松。然而,这并不是结束,这是因为大多数情况下,我们可能会遇到一种情况,所有提供的公式需要更适合或足够我们正在执行的任务。

在这种情况下,我们可以使用 VBA(虚拟基础应用程序)高效地在 Microsoft Excel 中创建自己的函数,这些函数被称为用户定义函数(UDF)。

此外,用户定义函数(UDF)可以在工作表中与我们使用的常规 Excel 函数(如下所示)相同的方式使用:

SUM。 AVERAGE 等。

并且可以根据用户的要求使用 Visual Basic for Application(VBA)创建这些函数,这将有助于为用户在 Microsoft Excel 中提供方便。

除此之外,任何用户定义函数(UDF)都有一个基本规则,即必须由用户在FUNCTION过程而非子过程中定义,借助FUNCTION过程,可以有效地创建UDF,并在 Microsoft Excel 中使用它们作为一般的 Excel 函数,例如:

VLOOKUP。 SUM。 AVERAGE 等。 如何在 Microsoft Excel 中创建自定义或用户定义的函数?

首先,个人需要打开 Visual Basic 编辑器(VBE)并记住 VBE 在新窗口上开始并不关闭 Excel 电子表格。

可以使用键盘上的快捷按钮最容易、最简单地打开(虚拟基础应用程序)Visual Basic 编辑器:

Alt + F11。

Excel 如何创建自定义函数

打开 VBE 后,我们需要添加一个新的模块,我们将在其中编写自己的函数。

我们右键单击 VBA 项目窗格,选择插入 -> 模块。当我们单击模块时,屏幕上会出现一个空的模块窗口,在其中需要相应地指定自定义函数。

在创建用户定义函数时需要遵循的规则:

用户定义函数必须始终以“Function”开头,并通常以“End Function”结束。 然后“Function”后面必须跟随函数的名称。这是个人创建并使用的一个标题,以便个人稍后能够轻松识别和使用它。 必须记住,不要将UDF的名称命名为标准Excel函数的名称。如果这样做,那么标准函数将始终被执行。 相应的用户定义函数的名称不能与给定工作表中使用的特定单元格的地址相匹配。 特定函数的参数首先以括号中列出,这是它将使用的数据,可以有多个参数。如果在某种情况下有更多参数,则应用逗号分隔。 如果在UDF中的函数不使用参数,则在这种情况下,需要创建一个没有参数的函数。 个人还需要确定要由用户定义的函数使用的变量。 然后,个人将放置几个VBA语句,可以通过传递给函数的参数有效地执行计算。 最后,个人需要编写一条语句,将最终值分配给与函数名称相同的给定变量。

示例 例子#1 – 用户自定义函数可以在Excel中找到三角形的面积

事实上,数学类的学生总是遇到需要找到三角形面积的数学问题。尽管众所周知,它有一个非常简单的公式来解决,但如果他们有一些函数可以计算三角形的面积,学生们会感到高兴。

因此,我们将遵循下面提到的步骤来创建一个可以有效计算三角形面积的函数:

步骤1: 首先,我们需要在Visual Basic Editor(VBE)下面插入一个新的模块。我们可以点击“插入”选项卡,然后从中选择“模块”来打开VBE。

Excel 如何创建自定义函数

步骤2: 在这一步中,我们将通过将其命名为TriangleArea来定义一个新的FUNCTION过程。

Excel 如何创建自定义函数

由于这是一个FUNCTION过程,我们需要在定义函数时定义目的是计算三角形面积的参数。

步骤3: 然后,我们将为TriangleArea函数分配两个参数,即高度和基础,这些参数位于括号内。这些被视为强制性参数,这意味着一个人需要提供高度和基础的值,以计算三角形的面积。

Excel 如何创建自定义函数

步骤4: 现在,在这一步中,我们将编写负责在提供高度和基础值的情况下返回三角形面积的代码。

Excel 如何创建自定义函数

步骤5: 现在,在给定的单元格C2中,我们将开始输入给定公式=TriangleArea(A2,B2),以计算三角形的面积,然后我们将提供高度和基础作为相同给定公式的参数。

Excel 如何创建自定义函数

步骤6: 然后,我们将关闭给定的括号以完成公式,并从键盘上按Enter键,以遇到高度为12,基础为7.5的三角形的面积。

Excel 如何创建自定义函数

之后,我们将拖动特定的公式以有效地获取第二个和第三个高度和基础值的面积。

Excel 如何创建自定义函数

#例子2:用户自定义函数可以找到任何数字的平方

假设我们想要任何特定数字的平方值,无论是整数数据类型还是浮点类型。并且没有任何函数为我们提供任何给定数字的平方值。因此,让我们在Microsoft Excel中创建一个可以有效执行此任务的函数。

步骤1: 在第一步中,在同一模块中,我们将开始定义一个新的FUNCTION过程来平方一个数,使用SquareNum。

Excel 如何创建自定义函数

步骤2: 然后,我们需要为给定的函数添加一个参数,并将num作为参数使用在括号内。一旦我们在给定函数中提供参数,我们将能够看到End Function语句。

Excel 如何创建自定义函数 步骤3: 在这一步中,在给定的函数内部,我们可以添加一段代码或一行代码来获得特定数字的平方数。由于num是SquareNum函数的参数,我们有两种选项来获得所需的输出:

Excel 如何创建自定义函数

一种方法是将num乘以自身,另一种方法是使用num的幂运算符“^ ”。在本例中,我们将选择后一种方法,因为它使代码更加通用且不太复杂。

步骤4: 然后,我们将通过单击Visual Basic for Editor(VBE)下的“保存按钮”来保存代码,以便我们也可以在Microsoft Excel工作表下使用名为SquareNum的函数。

Excel 如何创建自定义函数

假设我们有一组不同的数字需要为其获取平方值。因此,在这种情况下,我们可以使用上面定义的SquareNum函数来有效地获得输出。

Excel 如何创建自定义函数

步骤5: 在单元格B2中,我们将开始输入“平方值”,并遇到刚刚定义的用于平方数的函数,然后双击选择它。

Excel 如何创建自定义函数

步骤6: 然后,我们将A2作为该函数的参数,以便它可以平方存储在单元格A2中的数字。

Excel 如何创建自定义函数

步骤7: 完成上述步骤后,我们将关闭括号以完成公式,然后按Enter键从键盘获得数字11的平方。

Excel 如何创建自定义函数

步骤8: 在这一步中,我们将拖放并粘贴公式到其余单元格中,以获取剩余数字的平方根。

Excel 如何创建自定义函数

Microsoft Excel中有哪些类型的用户定义函数?

Microsoft Excel中可用的用户定义函数类型如下:

不带参数。 带一个参数。 使用数组作为参数。 带有多个参数。

不带参数

众所周知,Microsoft Excel具有不需要参数(NOW,RAND,TODAY)的各种标准函数。

例如,TODAY函数将返回当前日期,而RAND函数主要返回介于0和1之间的随机数字,我们不需要有效地指定任何值给它们。

并且最重要的一点是,我们还可以在Visual Basic for Application(VBA)中创建此类函数。下面提到的代码将分别将我们的工作表名称写入单元格:

代码:

Function SheetName() as String Application.Volatile SheetName = Application.Caller.Worksheet.Name End Function

我们应该注意,在函数名称后的括号中没有任何参数,这是因为需要返回的结果不依赖于我们的工作文件中的任何值,并且不需要任何参数。

除此之外,上述代码将将函数的输出定义为字符串数据。如果我们不指定数据类型,则Excel会自动确定。

带一个参数 现在,我们将进一步创建一个简单的函数,在一特定单元格中有效地使用一个单一的参数。

我们的主要任务是从给定的文本字符串中提取最后一个单词,因此我们将使用下面提到的代码:

代码:

Function ReturnLastWord (The_Text As String) Dim stLastWord As String '从给定的文本字符串中提取最后一个单词。' StLastWord = StrReverse (The_Text) StLastWord = Left (stLastWord, InStr (1, stLastWord, " ", vbTextCompare)) ReturnLastWord = StrReverse (Trim (stLastWord)) End Function

The_Text 是选定单元格中的值,我们可以表明这将是一个文本值。

StrReverse 函数以字符相反的顺序返回文本,而特定的 InStr 函数用于确定第一个空格的位置。通过 Left 函数的帮助,我们可以获得所有特定结束于第一个空格的字符,我们也可以通过仅使用 Trim 删除所有的空格。 StrReverse 有助于改变字符的顺序,在这之后我们将从给定的文本中得到最后一个单词。

由于此函数通常需要单元格值,并且在此情况下不需要使用 Application. Volatile。

利用数组作为参数

我们都知道,大多数 Microsoft Excel 函数基本上使用值数组作为参数。

下面的代码将帮助创建一个函数,该函数将总和指定单元格范围内的所有偶数。

代码:

Function SumEven (NumRange as Range) Dim RngCell As Range For Each RngCell In NumRange If IsNumeric (RngCell. Value) Then If RngCell. Value Mod 2 = 0 Then Result = Result + RngCell. Value End If End If Next RngCell SumEven = Result End Function

在上述代码中,NumRange 参数是主要被认为是 rangeRange,这意味着给定的函数将使用原始数据数组。它看起来像下面这样:

Function SumEven(NumRange as Variant)

此外,Variant 类型提供了一个“非维度”容器来存储数据。由于这种变量可以用于存储 VBA 中允许的任何类型的数据类型,包括数字、文本、日期等。

代码具有 For Each 参数,因为它接受每个单元格并检查它是否包含数字。如果它不包含数字,则不会发生任何事情,然后继续下一个单元格。如果找到一个数字,它将通过 MOD 函数来检查它是否是偶数。

所有偶数相加的结果存储在 Result 变量中,当循环结束时,Result 值将被有效分配给 SumEven 变量,然后传递给函数。

Excel 中的多个参数

许多 Microsoft Excel 函数都有多个参数。这就是为什么能够有效地创建具有多个参数的用户定义函数非常重要。

代码:

Function GetMaxBetween (rngCells As Range, MinNum, MaxNum) Dim NumRange As Range Dim vMax Dim arrNums () Dim i As Integer ReDim arrNums (rngCells.Count) For Each NumRange In rngCells vMax = NumRange Select Case vMax Case MinNum + 0.01 To MaxNum - 0.01 arrNums (i) = vMax i = i + 1 Case Else GetMaxBetween = 0 End Select Next NumRange GetMaxBetween = WorksheetFunction.Max (arrNums) End Function

上面提到的代码主要有 3 个参数:数值字段的范围、一个数字字段的下限以及一个范围的上限。 第一个是 rngCells 作为范围Range。 它是一组单元格的范围,可以帮助查找其中的最大值。而相反,第二个和第三个参数(MinNum,MaxNum)通常没有类型声明,这意味着 Variant data 类型将自动应用于它们。

此外,虚拟基本应用程序(VBA)使用6种不同的数字数据类型。仅指定其中一种意味着限制该函数的使用。因此,最好让Microsoft Excel确定数值数据类型。

For Each 循环依次使用所选范围中的所有值。使用标准 MAX FUNCTION 将范围中的数字从最大到最小值写入特殊数组 – arrNums,从而有效地查找数组中的最大数字。

个人在Microsoft Excel中需要记住哪些要点?

在使用Microsoft Excel中的用户定义函数时,个人需要记住以下重要事项:

个人应记住,通过VBA创建用户定义函数(UDF)可以创建自定义公式,从而减少执行任何任务所需的时间并简化任务。 用户定义函数(UDF)仅限于它被创建的工作表。但是,个人可以将代码复制并粘贴到其他工作表中,在那里他/她想要使用该函数。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3