定义一个excel里面的vba函数?

输入是一列数字,输出是一个值。需要编写一些函数,在输入一个框定的范围后,直接通过vba函数得出输出的值。输入的数据是非负的数。中间运算过程(仅为表达清楚该过程):1. 输入数据的和为Sum2. 每一个数据除以Sum的值为pi3. 计算所有的pi*log(pi),并求和(log的底数为2)4. 输出值为3结果的相反数。输入输出数据及过程,见图

第1个回答  2020-07-14
Function logsum(rng As Range)
Dim arr
Dim brr
Dim i As Long
Dim su
If rng.Count > 0 Then
logsum = Application.Sum(rng)
ReDim arr(1 To rng.Count)
ReDim brr(1 To rng.Count)
For i = 1 To rng.Count
arr(i) = rng(i).Value / logsum
brr(i) = Log(arr(i)) / Log(2) * arr(i)
su = su + brr(i)
Next
logsum = Abs(su)
End If
End Function
'自定义函数放入模块中
'引用示例:=logsum(J3:J7)
第2个回答  2020-07-13
可以让代码代你操作,我负责代码你负责我。