=SUMIF(MONTH(A:A),9,B:B),,為啥被提示語(yǔ)法錯(cuò)誤,? SUMIF是工作中最常用的條件求和函數(shù)。它可以根據(jù)指定條件對(duì)數(shù)據(jù)統(tǒng)計(jì)求和,,語(yǔ)法簡(jiǎn)單,,上手快捷。不過大部分朋友們?cè)谑褂盟倪^程中,,早晚會(huì)遇到下面這樣的問題。 打個(gè)響指,我舉個(gè)例子,。 如下圖所示,,A列是日期,B列是金額,,需要統(tǒng)計(jì)1月份的銷售總額,。 有些朋友會(huì)將公式寫成下面這樣:
=SUMIF(MONTH(A:A),1,B:B) 先用MONTH函數(shù)計(jì)算A列日期所屬的月份,然后再統(tǒng)計(jì)求和,。思路清晰,,公式看起來也很正常,但卻被系統(tǒng)警告"此公式有問題" 公式有啥問題呢,?年紀(jì)大,?不洗澡?再婚不準(zhǔn)人說話,?——它也不明明白白的說,,就說有問題,老官僚了,。 問題其實(shí)出在SUMIF的第1參數(shù)和第3參數(shù)只支持單元格引用(Range),,不支持其它數(shù)據(jù)類型上。 A:A/A1:A200這種是單元格引用,,MONTH(A:A)是對(duì)A列數(shù)據(jù)獲取月份值構(gòu)成的內(nèi)存數(shù)組,。
有朋友可能會(huì)想,這意思就是SUMIF第1/3參數(shù)不支持使用公式咯,? ——這倒也不是,,如果函數(shù)公式返回的結(jié)果屬于單元格引用,那也是支持的,。有些函數(shù)返回的結(jié)果雖然看起來是數(shù)據(jù),,其實(shí)是引用,典型如以下幾位大爺: INDEX/OFFSET INDIRECT/XLOOKUP 比如,,以下公式會(huì)被系統(tǒng)允許正常運(yùn)行: 當(dāng)愛已成引用 ▼ =SUMIF(OFFSET(B1,0,0,20),">0")
引用和數(shù)組的區(qū)別咱們就不展開說了,,說多了,不怕薇婭就怕麗婭,。
…… 那這是不是意味著案例問題就不能使用SUMIF函數(shù)解決呢,?
也不是。
只是繞了點(diǎn)路▼
=SUMIF(A:A,"<=2021/1/31",B:B) -SUMIF(A:A,"<2021/1/1")
用小于等于2021/1/31的金額減去小于2021/1/1的金額,,就是2021年1月份的總額,。 這數(shù)學(xué)邏輯怎么樣?小學(xué)可以畢業(yè)了吧,?
還可以把上面的邏輯換用SUMIFS表達(dá): =SUMIFS(B:B, A:A,"<=2021/1/31", A:A,">=2012/1/1")
該公式統(tǒng)計(jì)小于等于2021/1/31同時(shí)大于等于2021/1/1的金額,,即為2021年1月份的總額,。
…… 誠(chéng)如您所想,雖然SUMIF(S)最終可以解決這個(gè)問題,,但確實(shí)不大方便,。
比如下面這種情況,需要統(tǒng)計(jì)多個(gè)月份的合計(jì)值:
此時(shí)堅(jiān)持使用SUMIFS函數(shù),,就會(huì)很辛苦: =SUMIFS(B:B, A:A,">=2021/"&D2&"/1", A:A,"<=" &EOMONTH(DATE(2021,D2,1),0) )
更推薦使用SUMPRODUCT函數(shù): 劍來 ▼ =SUMPRODUCT( (MONTH(A$2:A$41)=D2) *B$2:B$41)
MONTH(A$2:A$41)=D2部分,,判斷A2:A41的月份是否等于D2指定值,返回一個(gè)邏輯值內(nèi)存數(shù)組,,然后和B2:B41區(qū)域的金額做乘積運(yùn)算,,最后求和即為結(jié)果。
需要說明的是,,這公式計(jì)算的是1月的合計(jì)金額,,不受年份的限制,2020年1月,,算1月,,2021年1月,也算1月,。 如果需要計(jì)算指定年和月的數(shù)據(jù)之和,,可以搭配TEXT函數(shù)。
比如計(jì)算2021年1月份的金額合計(jì),,參考公式如下: 劍再來 ▼ =SUMPRODUCT( (TEXT(A$2:A$41,"e-m") ="2021-1") *B$2:B$41) ↑ SUMPRODUCT函數(shù),,看這一帖足夠了 沒了,今天給大家分享的內(nèi)容就這樣,,有幫助的話,,右下角點(diǎn)個(gè)贊,有疑問的話,,可以在微信會(huì)員群中提問交流,,揮揮手,咱們明天再見,。
|