VBA 定义能返回数组公式的自定义函数

返回一个变量大小结果数组的方法

此方法返回基于一个参数范围的值的数组。结果数组的大小具体取决于参数数组中的元素数量波动。例如对于假定您要创建一个范围中的每个值乘以 100 的函数。下面的自定义函数接受作为其参数的数组 (某一范围的值):

      Function Multiply_Range(myrange As Object) As Variant
      Dim temp As Variant
      Dim i As Integer, j As Integer
      temp = myrange.Value ‘creates a copy of the values in myrange
      ‘ if more than one element then loop through both dimensions of
      ‘ the array and multiply each element by 100.
      ‘ if not more than one element then temp is multiplied by 100.
      If IsArray(temp) Then
         For i = 1 To UBound(temp, 1)
            For j = 1 To UBound(temp, 2)
               temp(i, j) = temp(i, j) * 100
            Next j
         Next i
      Else
         temp = temp * 100
      End If
      Multiply_Range = temp
   End Function
				

若要用于自定义函数中的单元格 A1:A4 中输入以下数据:

A1: 5
A2: 3
A3: 1
A4: 2

选择范围 B1:B4 并以数组形式输入以下公式:

=Multiply_Range(A1:A4)

注意: 上述公式必须以数组公式的形式输入。若要将公式作为数组公式,在 Excel 中输入 windows,请按 CTRL + SHIFT +
ENTER。在 Excel 中为 Macintosh,请按命令 + ENTER。

结果将是:

   A1:     5       B1:     500
   A2:     3       B2:     300
   A3:     1       B3:     100
   A4:     2       B4:     200
				

要返回的固定大小数组结果的方法

此方法从自定义函数返回多个值假定您在所得数组中已经输入固定的个数的元素。

下面的自定义函数接受起始时间和结束时间,并返回它们在 3 行 1
列数组之间的小时、 分钟和秒数。 >

   Function Elapsed_Time(start, finish As Date) As Variant
      Dim hours, minutes, seconds As Integer
      hours = Hour(finish - start)
      minutes = Minute(finish - start)
      seconds = Second(finish - start)
      Elapsed_Time = Application.Transpose(Array(hours, minutes, seconds))
   End Function
				

若要用于此自定义的函数 (例如对于 A1 和 A2 下面) 的两个单元格中输入开始时间和完成时间。

A1: 1: 00: 00
A2: 6:49:34

然后,突出显示的列 (例如对于到 A5 A3) 中的三个单元格,并以数组公式的形式输入以下内容:

=Elapsed_Time(A1,A2)

注意: 上述公式必须以数组公式的形式输入。若要将公式作为数组公式,在 Excel 中输入 windows,请按 CTRL + SHIFT +
ENTER。在 Excel 中为 Macintosh,请按命令 + ENTER。

该结果将显示,如下所示:

   A1:     1:00:00
   A2:     6:49:34
   A3:     5
   A4:     49
   A5:     34
				

如果您希望该函数输入水平代替垂直的单元格区域,更改 Elapsed_Time 该行在以读取行:

elapsed_Time = 阵列 (小时、 分钟、 秒)

时间: 2024-10-12 16:49:25

VBA 定义能返回数组公式的自定义函数的相关文章

C++ —— 返回数组指针的函数

基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用. 定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用  和 返回一个含有10个整型元素的数组的指针 的函数为例. 法一:(不使用别名) int (*getCopyArr(int (&arr)[10]))[10] { int (*n)[10] = (int (*)[10])new int[10]; for (int i = 0; i < 10; i++) (*n)[i] = arr[i

返回数组指针

如果我们想定义一个返回数组指针的函数,则数组的维度必须跟在函数的名字之后,然而函数名字之后的是形参列表,所以形参列表应该在数组的维度之前.返回数组指针的函数形式如下所示: Type (*function (parameter_list)) [dimension] 下面这个func函数的声明没有使用类型别名: int (*func (int i))[10]; C++ 11 中可以使用尾置返回类型 auto func(int i) -> int(*)[10]; 使用decltype 如果我们知道函数

转:存储过程和自定义函数的区别

首先来看一下存储过程和自定义函数的概念 一. 什么是存储过程? 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理. 存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.有条件执行以及其它强大的编程功能. 存储过程可包含程序流.逻辑以及对数据库的查询.它们可以接受参数.输出参数. 返回单个或多个结果集以及返回值. 可以出于任何使用SQL 语句的目的来使用存储过程

存储过程和自定义函数的区别

1: 1)存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程. 自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作. 2)存储过程,可以使用非确定函数. 自定义函数,不允许在用户定义函数主体中内置非确定函数. 3)存储过程,主要是返回一个int状态结果,也可返回记录集. 自定义函数,可以返回表变量. 关于这个,很容易糊涂.存储过程,可以使用这样的形式来返回N多的结果: create procedure sp1  a

自定义函数与储存过程的区别

存储过程和自定义函数的区别 Difference between Procedure and User Defined Function 首先来看一下存储过程和自定义函数的概念 一. 什么是存储过程? 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得 多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单 元处理. 存储过程存储在数据库内, 可由应用程序通过一个调用执行, 而且允许用户声明变 量.有条件执行以及其它强大的编程功能. 存储过程

MySQL学习20:运算符与函数之自定义函数

一自定义函数简介 (1)自定义函数定义 用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同. (2)自定义函数的两个必要条件 1)参数:可以有零个或多个. 2)返回值:只能有一个返回值. 使用自定义函数的注意事项 1)所有函数都有返回值,但不一定都有参数. 2)函数的参数与返回值之间没有必然的内在联系. 3)函数可以返回任意类型的值,同样可以接收这些类型的参数. (3)创建自定义函数 创建自定义函数的语法结构: CREAT

SQL中存储过程与自定义函数的区别

存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 优点 ①重复使用.存储过程可以重复使用,从而可以减少数据库开发人员的工作量. ②提高性能.存储过程在创建的时候在进行了编译,将来使用的时候不再重新翻译.一般的SQL语句每

SQL自定义函数function

https://blog.csdn.net/qq_23833037/article/details/53170789 https://www.cnblogs.com/youring2/p/4916400.html 用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回. sql函数必须有返回值. ps: 函数看成一个处理某些数据的功能,因有返回值,则在代码使用中,需要一个处理过的数据. 可直接调用函数处理数据,返回数据给代码使用. 标量函数:返回一个标量值. 表格值函数{内联表

Excel 自定义函数

Excel自定义函数编写有3种方法: 1.VBA种编写:直接编写 2.自定义函数编写到XLL中:如果您熟悉C++,可以将自定义函数编写到XLL中,不熟悉也可以使用ExcelDNA这个开源的库使用.NET技术也可以将您的代码编译为XLL 3.将类库注册成Com组件也可在Excel中调用:如果熟悉.NET,使用C#编写自定义函数类库,然后将类库注册成Com组件也可在Excel中调用