我需要创建一个excel加载项,它接受两个数据集的上界和下界的参数。我目前已经编写了一个函数,该函数使用硬编码的梯形规则对下限为4、上限为13的范围执行正确的积分计算。
(=SUMPRODUCT(A5:A13-A4:A12;(B5:B13+B4:B12)/2)
我需要创建一个独立的(可能是插件)文件,可以导入到任何excel文件中,并接受两个参数(上限和下限代替4和13),以尽可能简单地完成此功能。
插件是实现这一目标的最佳方式吗?或者有更好的方法来完成这项任务吗?
我很抱歉;还不能评论,因为我没有足够的声誉
两个参数将如何实现您的功能?我甚至不能让你的公式正确运行
也就是说,你只需要将计算放在VBA中的一个函数中,确保它成为public
函数,然后保存该模块,导出它,并将其移交给需要使用它的人。他们将需要将模块导入VBA,但之后他们只需要从公式栏中调用它,像键入普通工作表函数一样键入:
=TrapezoidFunctionByCaseyHux(
然后将要求它们提供参数单元。
希望这对有帮助
要创建UDF(用户定义的函数),还可以通过ExcelDna框架。因此,您可以创建外接程序,并使用安装程序将其分发到您的组织中。
将包含此代码的.bas文件导入到excel工作表的Visual Basic编辑器中
Option Explicit
Function Trapezoid(KnownXs As Variant, KnownYs As Variant) As Variant
Dim i As Integer
If Not TypeName(KnownXs) = "Range" Then
Trapezoid = "X range is not valid"
Exit Function
End If
If Not TypeName(KnownYs) = "Range" Then
Trapezoid = "Y range is not valid"
Exit Function
End If
If KnownXs.Rows.Count <> KnownYs.Rows.Count Then
Trapezoid = "Number of Xs <> Number of Ys"
Exit Function
End If
Trapezoid = 0
For i = 1 To KnownXs.Rows.Count - 1
Trapezoid = Trapezoid + Abs(0.5 * (KnownXs.Cells(i + 1, 1) _
- KnownXs.Cells(i, 1)) * (KnownYs.Cells(i, 1) + KnownYs.Cells(i + 1, 1)))
Next i
End Function
然后,您可以使用您的选择作为参数,并将.bas文件添加到多个工作簿