我需要创建一个excel加载项,它接受两个数据集的上限和下限的参数。我目前有一个函数编写,使用硬编码的梯形规则执行正确的积分计算,范围的下限为4,上限为13。
(=SUMPRODUCT(A5:A13-A4:A12;(B5:B13+B4:B12)/2)
我需要创建一个独立的(可能是加载项)文件,可以导入到任何excel文件中并接受两个参数(上限和下限代替4和13)以尽可能简单地完成此功能。
加载项是解决此问题的最佳方式还是有更好的方法来完成此任务?
答案 0 :(得分:2)
道歉;我还没有评论,因为我没有足够的声誉
两个参数如何实现您的功能?我甚至无法让你的公式正常运行?
那就是说,你只需要将你的计算放在VBA中的一个函数中,确保它成为public
函数,然后保存该模块,将其导出并交给需要使用的人。它。他们将需要将模块导入到VBA中,但之后他们只需要从公式栏中调用它,输入正常的工作表函数,如:
=TrapezoidFunctionByCaseyHux(
然后他们将被要求提供参数单元格。
希望这会有所帮助
答案 1 :(得分:0)
要创建UDF(用户定义的函数),您也可以使用.Net ExcelDna framework。 因此,您可以使用安装程序创建加载项并将其分发到组织中。
答案 2 :(得分:0)
将带有此代码的.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文件添加到多个工作簿