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