日常工作中,經(jīng)常會有一些按不同階段匯總的計算。比如下圖所示,在一組銷售記錄中匯總本年度的銷售額。
D4單元格用到的公式為:
=SUMPRODUCT((YEAR(A2:A13)=YEAR(TODAY()))*B2:B13)
公式分別使用YEAR函數(shù)計算A2:A13單元格中日期的年份,結(jié)果為一個由年份組成的內(nèi)存數(shù)組。用YEAR(TODAY())計算當(dāng)前日期的年份,結(jié)果為2015。
將A2:A13的年份與當(dāng)前日期的年份進行判斷,得到由邏輯值TRUE或是FALSE組成的內(nèi)存數(shù)組,再用邏輯值與B列的銷售計劃相乘。
在數(shù)組運算中,TRUE相當(dāng)于1,而FALSE相當(dāng)于0,也就是用1或是0乘以B列的銷售計劃,最后使用SUMPRODUCT函數(shù)計算出乘積之和,結(jié)果為737。
如果是計算當(dāng)前月的銷售計劃總額,只需要將公式中的計算年份的YEAR函數(shù)換成MONTH函數(shù)就可以了,其計算過程是一樣的。
如下圖所示,假如需要計算當(dāng)前周的銷售計劃總額,該怎么計算呢?
這里的一周,規(guī)則就按照大家的日常習(xí)慣,起始日期為星期一,結(jié)束日期為星期日。
D4單元格中用到的公式為:
=SUMPRODUCT((WEEKNUM(–A2:A13,2)=WEEKNUM(TODAY(),2))*B2:B13)
公式用WEEKNUM函數(shù)計算日期在該年的周數(shù)。第二個參數(shù)為“2”,表示一周的開始日期為周一。
“WEEKNUM(–A2:A13,2)”返回A列日期在該年的周數(shù)數(shù)組。
WEEKNUM函數(shù)的第一參數(shù)不能直接使用日期區(qū)域,假如使用WEEKNUM(A2:A13),公式將返回錯誤,但是用“–日期區(qū)域”、“1*日期區(qū)域”、“0+日期區(qū)域”等形式將區(qū)域引用變成內(nèi)存數(shù)組引用,則可以突破這一限制,結(jié)果將返回一個包含周數(shù)的內(nèi)存數(shù)組。
其他的計算過程就是和前面咱們說到的按年度計算是相同的。
這個例子中,只能處理所有日期都是在一個年份中的情況,如果有不同年份的數(shù)據(jù),則需要用遍歷的方法來計算了:
=SUMPRODUCT(SUMIF(A2:A13,”=”&(TODAY()-WEEKDAY(TODAY(),2)+ROW(1:7)),B2:B13))
WEEKDAY(TODAY(),2)部分,計算當(dāng)前的星期值,用當(dāng)前日期TODAY()減去當(dāng)前的星期值,就是上一個周日的日期。再分別加上ROW(1:7),得到本周一至本周日的日期值。
接下來使用SUMIF函數(shù),以A2:A13作為條件區(qū)域,分別以本周一至本周日的日期值作為求和條件,計算B2:B13單元格區(qū)域中與之對應(yīng)的銷售計劃額,得到一個內(nèi)存數(shù)組:
{80;83;77;80;0;88;80}
再用SUMPRODUCT函數(shù)計算出乘積之和。
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。