最近在學(xué)習(xí)零售規(guī)律,遇到excel中按固定天數(shù)畫平均線,在python中比較好做,excel中一直不知道方法,網(wǎng)上找了好久也沒(méi)有找到滿意方法,今天做出來(lái)了,記錄下,方便自己以后回憶,也方便大家有需求的,可以直接看。
假設(shè)有這么一數(shù)據(jù):
做出曲線圖是這樣的:
不太方便看出銷售規(guī)律,加上平均線就方便了:
要做平均線當(dāng)然要做平均值了。
我們正常的平均值很容易算:
=AVERAGE(B2:B8)
直接向下拉:
后面的值都不一樣,我們要的是固定天數(shù)一樣的平均值,這顯示不對(duì),怎么辦?在2和8上加dollar符號(hào)試試。
=AVERAGE(B$2:B$8)
這次倒全是一樣了,可是超過(guò)需求天數(shù)后的值也沒(méi)變,這顯示也是不對(duì)的。
由于我平時(shí)對(duì)python比較熟悉,心想excel肯定也有能夠做固定循環(huán)的函數(shù)吧。我們需求是什么?求固定天數(shù)的平均值,假設(shè)是7天(一周),也就是每7天一個(gè)組,分別計(jì)算,手工計(jì)算到是快,就是數(shù)據(jù)多了,填寫太麻煩了。
baidu了一下,找到了這樣的公式:
=IF(MOD(COUNT($A$1:A1),7)=0,AVERAGE(OFFSET(A1,-6,0,7,1)),"")
里面有OFFSET
引起了我的興趣,由于我平時(shí)沒(méi)用過(guò),先研究下吧。
百度上是這么解釋的:
OFFSET(參考單元格,移動(dòng)的行數(shù),移動(dòng)的列數(shù),所要引用的行數(shù),所要引用的列數(shù))
這個(gè)函數(shù)肯定是我們要用的,但是怎么確定讓組內(nèi)的平均值保持一致呢?
用OFFSET
這個(gè)函數(shù),也就是要保證每組開(kāi)始的行數(shù)始終是這組開(kāi)始的第一個(gè)值。也就是:
這下清楚了,要得到函數(shù)所需的行數(shù),就是要得到所在行的行號(hào)ROW()
,用所在行的行數(shù)除以7取向上整數(shù)乘7再減去7就對(duì)了。
CEILING(ROW(B2)/7,1)*7-7
這個(gè)整個(gè)偏移函數(shù)就出來(lái)了:
=AVERAGE(OFFSET($B$1,CEILING(ROW(B2)/7,1)*7-7,,7))
最后再展示下加上平均值的效果:
希望能幫到大家!
如有更方便的辦法,希望大家能夠指出,不勝感激!