【问题标题】:Average function平均函数
【发布时间】:2023-03-19 05:32:01
【问题描述】:

我有大量数据,每个月都会更新。我想检查新数据是否与前几个月的百分比不同。

看起来像这样:

month name  data  
jan   551   2  
jan   552   20  
dec   553   12  
jan   553   13  
dec   554   9  
okt   555   2  
nov   555   2  
dec   555   2,5    

所以 5 个名字,最多 4 个月和不同的数据公关。月,公关姓名。

我想制定一个公式来告诉我,如果其中一个名称与前几个月相比有 % 的差异。例如,我想说“名称”555 在 dec 中与该客户的平均值相比相差 25%。

谢谢,
安德斯


好吧,我想我不太好解释自己。所以我会尽量说清楚一点。

我是作为一个excel函数来做这个的。

所以我正在寻找的公式应该计算 pr。命名平均数字(avgN)。这当然每个月都会改变。并且该公式应该找到与平均值相比的每月差异。

我有大约 2000 行,有 900 个不同的名称。

【问题讨论】:

    标签: excel average excel-2000


    【解决方案1】:

    假设:

    avgN = average amount for customer n
    currN = current (monthly) amount for customer n
    delta = tolerance expressed as a decimal (.25 in your example)
    

    然后是公式

    =abs((currN - avgN) / avgN) 
    

    将返回本月金额与平均值之间的百分比差异。如果您想测试这是否超过公差 (delta),请使用上面的表达式作为 if 工作表函数的第一个参数,例如

    =if(abs((currN - avgN) / avgN) > delta, "tolerance exceeded", "within tolerance") 
    

    您的问题不清楚您是要在 VBA 代码中还是在工作表函数中执行此操作。如果是前者,那么您将需要这样的东西

    Sub checkTolerance()
    
        Dim percentageChange As Double
        Dim currN As Double
        Dim avgN As Double
        Dim delta As Double
    
        ' Set the values of the variables above from somewhere (worksheet cell, user input, etc.)
    
        percentageChange = Abs((currN - avgN) / avgN)
    
    
        If percentageChange > delta Then 
            ' Do something when tolerance is exceeded
            MsgBox "tolerance exceeded"     
    
        Else
            ' Do something when amount is within tolerance
            MsgBox "within tolerance"
        End If 
    
    End Sub
    

    【讨论】:

    • P.S.请不要告诉任何人我知道 VBA :)
    【解决方案2】:
    =(SUM(($A$2:$A$9=A2)*($B$2:$B$9=B2)*($C$2:$C$9))-(SUM(($B$2:$B$9=B2)*($C$2:$C$9))/SUM(--($B$2:$B$9=B2))))/SUM(($A$2:$A$9=A2)*($B$2:$B$9=B2)*($C$2:$C$9))
    

    这是一个数组公式,必须使用 Control+Shift+Enter 输入,而不仅仅是 Enter。如果您的第一行数据从 A2 开始,则此公式进入 D2 并填写到您有数据的范围内。

    SUM(($A$2:$A$9=A2)*($B$2:$B$9=B2)*($C$2:$C$9))
    

    这部分汇总了与您所在行具有相同名称和月份的所有数据。

    (SUM(($B$2:$B$9=B2)*($C$2:$C$9))/SUM(--($B$2:$B$9=B2)))
    

    这部分取与您所在行同名的所有数据的平均值(总和/计数),不考虑月份。

    对于 12 月 553 日、12 日,您将获得 -4.17%。 553 的平均值为 12.5,dec 比平均值低 4.17%。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      相关资源
      最近更新 更多