我有一大堆数据,每个月都会更新。我想检查新数据是否与前几个月的数据有所不同。
看起来像这样:
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个月,不同的数据pr。月,公元名称。
我想制作一个可以告诉我的公式,如果其中一个名字与前几个月相比有所不同。例如,我想说,与该客户的平均值相比,dec中的“name”555相差25%。
感谢,
安德斯
嗯,我想我不太好解释自己。所以我会试着更清楚一点。
我这样做是一个excel功能。
所以我正在寻找的公式应该计算pr。列出平均数字(平均值)。这当然每个月都在变化。公式应该找出与平均值相比的月度差异。
我有大约2000行,有900个不同的名字。
答案 0 :(得分: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
答案 1 :(得分: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%。