如何为Excel工作簿创build参数化的加载项

我需要创build一个excel插件,它接受两个数据集的上下限参数。 我现在写了一个函数,它使用硬编码的梯形法则进行正确的积分计算,下限为4,上限为13。

(=SUMPRODUCT(A5:A13-A4:A12;(B5:B13+B4:B12)/2) 

我需要创build一个可以导入到任何excel文件中的独立(可能是加载项)文件,并接受两个参数(上限和下限代替4和13)来尽可能简单地完成此function。

插件是最好的方式去做,或者有更好的方法来完成这个任务吗?

我很抱歉; 不能评论,因为我没有足够的声誉

两个参数如何完成你的function? 我什至不能让你的公式正确运行?

也就是说,你只需要将你的计算放在VBA中的一个函数中,一定要把它作为一个public函数,然后保存这个模块,导出它,然后把它交给需要使用它的人。 他们需要将模块导入到VBA中,但是之后他们只需要从编辑栏中调用它,就像正常的工作表函数一样input:

=TrapezoidFunctionByCaseyHux(

然后他们会被要求提供参数单元。

希望这有助于某种方式

要创buildUDF(用户定义的函数),您还可以通过ExcelDna框架使用.Net。 因此,您可以使用安装程序创build加载项并将其分发到组织中。

使用此代码导入.bas文件到您的Visual Basic编辑器为您的Excel工作表

 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 

然后,您可以使用您的select作为参数,并将.bas文件添加到多个工作簿