gpt4 book ai didi

vba - Excel宏VBA代码计算一串数字的平均值

转载 作者:行者123 更新时间:2023-12-03 02:35:31 25 4
gpt4 key购买 nike

我正在尝试创建一些 VB 代码来在 Excel 中创建宏。然而我之前只使用过Python和Java,所以对此很陌生,问题是我有一个单元格,其中包含一个数字列表,所有数字都用逗号分隔并存储为字符串,例如12,5,7,9。这是从其他地方计算出来的。我希望能够迭代数字列表,将它们分开,将它们转换为整数,然后根据数字的数量计算它们的平均值。我希望这适用于当前选定的单元格并在下一个单元格中显示结果。

这是我到目前为止所做的代码。它不起作用,我无法测试它,因为运行它时会出现所需的错误对象。任何建议都会很棒。谢谢。

Sub CalculateAverage()
Dim contents As String
Dim cell As Range
Dim NumbersArray() As String
Set cell = ActiveCell.Select()
contents = Range(cell).value
NumbersArray = Split(contents, ",")

Dim count As Integer
Dim lengthOfArray As Integer
Dim first As Integer
Dim last As Integer


first = LBound(NumbersArray)
last = UBound(NumbersArray)

lengthOfArray = last - first
Dim total As Integer
Dim value As Integer

count = 0
While count <= lengthOfArray
total = total + CInt(NumbersArray(count))
count = count + 1
Wend

Dim average As Double
average = total / count
Range("A2").value = average
End Sub

最佳答案

我会使用用户定义的函数来解决这个问题。像这样的东西:

Function CalculateAverage(s As String) As Double
Dim v As Variant, i As Long, total As Double
v = Split(s, ",")
For i = 0 To UBound(v) 'LBound(v) = 0
total = total + v(i) 'VBA will coerce the values to double
Next i
CalculateAverage = total / (UBound(v) + 1)
End Function

它的工作原理如下:

enter image description here

您可以直接从电子表格使用此函数,但也可以从子程序中调用它。

对您的代码的一些评论:

1) 使用Long 而不是Integer。整数很容易溢出

2 除非您有充分的理由使用整数,否则使用 double 作为电子表格值更为惯用。

关于vba - Excel宏VBA代码计算一串数字的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com