1

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

它看起来像这样:

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个月和不同的数据公关。月,公关 姓名。

我想制定一个公式,可以告诉我,如果其中一个名称与前几个月相比不同 i %。例如,我想说的是,与该客户的平均值相比,12 月的“名称”555 相差 25% 。

谢谢,
安德斯


好吧,我想我不太好解释自己。所以我会尝试更清楚一点。

我把它作为一个excel函数来做。

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

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

4

2 回答 2

0
=(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)))

这部分采用与您所在行同名的所有数据的平均值(总和/计数),无论月份如何。

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

于 2010-09-07T14:25:57.420 回答
0

认为:

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
于 2010-09-07T11:26:57.107 回答