VBA 去掉最大值,最小值,求方差

此算法是从一列数据中去掉最大数值和最小数值,求出总和,平均值,计算出

 在cell中填充去掉的最大值,最小值, 总和,平均值和方差.

  算法效率有点低,主要解决业务问题了.

Public Sub aver()

    Application.ScreenUpdating = False

    Dim maxCount

    maxCount = 10  //最大行数

   For k = 0 To 12   //最大的列数

        Dim largeIndex

        Dim smallIndex

        Dim largerValue

        Dim smalValue

        Dim index

        Dim tAvgValue

        Dim varianceValue As Double

        index = 0

        'Largervalue And SmallValue

        For Each x In Range(Cells(1, k + 1), Cells(maxCount, k + 1))

                If index = 0 Then

                    largerValue = x

                    smallValue = x

                    largerIndex = index

                    smallIndex = index

                End If

                If x > largerValue Then

                        largerValue = x

                        largerIndex = index

                End If

                If x < smallValue Then

                        smallValue = x

                        smallIndex = index

                End If

                ‘Debug.Print "largerValue: " & largerValue & "  x:" & x

                index = index + 1

        Next x

        

        'Sum Value

        Dim sum

        sum = 0

        Dim arr(0 To 7)  //10个数的话,去掉最大,最小就是8的数组

        Dim i

        i = 0

        Dim curIndex

        curIndex = 0

        For Each x In Range(Cells(1, k + 1), Cells(maxCount, k + 1))

          If curIndex = largerIndex Then

          ElseIf curIndex = smallIndex Then

          Else

                sum = sum + x

                arr(i) = x

                i = i + 1

          End If

          

          curIndex = curIndex + 1

        Next x

        tAvgValue = sum / (maxCount - 2)

        

        Dim sum1 As Double

        sum1 = 0

        Dim temp

        For Each y In arr

            If Abs(y) > Abs(tAvgValue) Then

                    temp = Abs(y) - Abs(tAvgValue)

                    sum1 = sum1 + temp * temp

            Else

                    temp = Abs(tAvgValue) - Abs(y)

                    sum1 = sum1 + temp * temp

            End If

        Next y

        varianceValue = Sqr(sum1 / (maxCount - 2))

   'MsgBox " largerValue: " & largerValue & "smallValue:" & smallValue & " the sum is :" & sum & " the Avg is :" & sum / 8

  

   Worksheets("Sheet1").Cells(maxCount + 5, k + 1) = "LargerValue: " & largerValue

   Worksheets("Sheet1").Cells(maxCount + 6, k + 1) = "smallValue: " & smallValue

   Worksheets("Sheet1").Cells(maxCount + 7, k + 1) = "sum: " & sum

   Worksheets("Sheet1").Cells(maxCount + 8, k + 1) = "Avg: " & tAvgValue

   Worksheets("Sheet1").Cells(maxCount + 9, k + 1) = varianceValue

   

   Next k

   Application.ScreenUpdating = True

End Sub


在Python中,计算平均值、方差和最大最小值是常见的数据分析任务,可以使用内置的函数轻松完成。以下是三种操作的方法: 1. 平均值(Average): 可以使用`sum()`函数加总所有数值,然后除以数量(列表长度)来计算。例如: ```python numbers = [1, 2, 3, 4, 5] average = sum(numbers) / len(numbers) ``` 或者使用`statistics`模块中的`mean()`函数,它是专门为统计目的设计的: ```python import statistics numbers = [1, 2, 3, 4, 5] average = statistics.mean(numbers) ``` 2. 方差(Variance): 方差测量了数据点与平均值之间的偏离程度。可以使用`numpy`库的`var()`函数或`statistics`模块的`variance()`方法,如果列表已排序,需先调用`numpy.array()`或`list()`: ```python import numpy as np numbers = [1, 2, 3, 4, 5] variance = np.var(numbers) # 或者 variance = statistics.variance(numbers) # 如果没有numpy: variance = sum((x - average) ** 2 for x in numbers) / len(numbers) ``` 3. 最大值(Max)和最小值(Min): Python内建函数`max()`和`min()`可以直接找出列表中的最大值最小值: ```python max_value = max(numbers) min_value = min(numbers) ``` 或者同样地,你可以使用`numpy`库的`amax()`和`amin()`,或者`statistics`模块的`max()`和`min()`,但注意后者只对可迭代对象有效。 如果你有具体的数据列表,我可以帮你演示如何应用这些方法。如果你需要计算特定类型的数值(如整数、浮点数或字符串中的数字),可能需要额外处理。现在,请告诉我你是否有具体的数值列表,或者需要进一步的解释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值