按動(dòng)態(tài)區(qū)域求和是日常工作中經(jīng)常會(huì)遇到的一類問(wèn)題(制作動(dòng)態(tài)圖表也經(jīng)常會(huì)遇到),具體演示如動(dòng)畫(huà)所示:
簡(jiǎn)單來(lái)說(shuō),就是根據(jù)選擇的開(kāi)始日期和結(jié)束日期,對(duì)數(shù)據(jù)源里符合條件的數(shù)據(jù)進(jìn)行匯總。
(案例選自【老菜鳥(niǎo)的班】一道課后作業(yè),數(shù)據(jù)源下載地址:https://pan.baidu.com/s/1BkW5y0WkIIkvg5sdXPcHfA)
這個(gè)題目發(fā)出以后,同學(xué)們一共給出了五種常用的公式,以下為大家進(jìn)行分享!
SUMPRODUCT
第一個(gè)公式是:=SUMPRODUCT(($A$2:$A$29>=$J$1)*($A$2:$A$29<=$J$2)*B2:B29)
這是最為常用的條件求和公式的套路了:SUMPRODUCT(第一組條件*第二組條件*求和數(shù)據(jù))
其中第一組條件為:$A$2:$A$29>=$J$1,表示日期列中大于等于開(kāi)始日期的數(shù)據(jù);
其中第二組條件為:$A$2:$A$29<=$J$2,表示日期列中小于等于結(jié)束日期的數(shù)據(jù);
求和數(shù)據(jù)就是B2:B29這個(gè)區(qū)域。
關(guān)于SUMPRODUCT的詳細(xì)介紹可以參閱:sumproduct函數(shù)最通俗易通的講解,不容錯(cuò)過(guò)!
SUM數(shù)組公式
第二個(gè)公式是:=SUM(($A$2:$A$29>=$J$1)*($A$2:$A$29<=$J$2)*B2:B29)
沿用公式一的思路,通常都可以將SUMPRODUCT函數(shù)替換為SUM函數(shù),不過(guò)要以數(shù)組公式的輸入方式來(lái)完成,也就是同時(shí)按著Ctrl、shift和回車鍵完成輸入,公式兩端自動(dòng)添加大括號(hào)。
原理不再贅述,有關(guān)于數(shù)組公式的基礎(chǔ)知識(shí),可以參閱:Excel數(shù)組公式入門
SUMIFS
第三個(gè)公式是:=SUMIFS(B2:B29,$A$2:$A$29,">="&$J$1,$A$2:$A$29,"<="&$J$2)
通過(guò)前面兩個(gè)公式可以了解到,本例實(shí)際上可以視為條件求和,既然是條件求和,當(dāng)然少不了SUMIF函數(shù),不過(guò)本例的條件不是一個(gè)而是兩個(gè),所以要用SUMIFS函數(shù)來(lái)完成。
公式結(jié)構(gòu):SUMIFS(實(shí)際求和區(qū)域,條件區(qū)域1,條件1,條件區(qū)域2,條件2)
B2:B29是實(shí)際求和的區(qū)域;$A$2:$A$29是條件區(qū)域,本例中的兩個(gè)條件區(qū)域都是A列;">="&$J$1是條件1,也就是大于等于開(kāi)始日期,注意這種條件的寫(xiě)法,符號(hào)要加引號(hào),同時(shí)使用&連接單元格;<="&$J$2是條件2,表示小于等于結(jié)束日期。
關(guān)于SUMIF函數(shù)在公眾號(hào)之前發(fā)了很多篇文章,有興趣的朋友可以參考本文介紹的方法來(lái)進(jìn)行搜索:守著一座金山,卻在到處尋找!今天告訴你怎么在公眾號(hào)挖寶……
SUM+OFFSET
第四個(gè)公式是:=SUM(OFFSET($A$1,MATCH($J$1,$A$2:$A$29,0),COLUMN(A1),$J$2-$J$1+1,1))
之前的三個(gè)公式其實(shí)都是利用了條件求和的套路,并不是按照動(dòng)態(tài)區(qū)域的思路來(lái)處理的,通常遇到有關(guān)于動(dòng)態(tài)區(qū)域,少不了OFFSET這個(gè)引用函數(shù),對(duì)于大多數(shù)朋友來(lái)說(shuō),OFFSET函數(shù)顯得難以理解,簡(jiǎn)單來(lái)說(shuō)一下OFFSET吧。
OFFSET(起始位置,行偏移量,列偏移量,區(qū)域高度,區(qū)域?qū)挾龋?,這個(gè)函數(shù)一共五個(gè)參數(shù),每個(gè)參數(shù)用起來(lái)都是非常靈活多變,這也是OFFSET函數(shù)難于掌握的一個(gè)原因。
就本例而言,我們需要使用OFFSET函數(shù)來(lái)確定一個(gè)動(dòng)態(tài)區(qū)域,首先確定這個(gè)區(qū)域的起點(diǎn),用$A$1來(lái)作為起點(diǎn)的話,實(shí)際要求和的位置需要根據(jù)開(kāi)始日期進(jìn)行調(diào)整,也就是行偏移量,這時(shí)就用到了MATCH這個(gè)專門定位的函數(shù),MATCH($J$1,$A$2:$A$29,0)這部分就是用MATCH函數(shù)來(lái)確定開(kāi)始日期在A列當(dāng)中的第幾個(gè)位置,例如,開(kāi)始日期是3月13日時(shí),就位于日期中的第六個(gè)位置,那么行偏移量就是6,表示A1向下6行。
列偏移量用的是COLUMN(A1)來(lái)確定,因?yàn)閿?shù)據(jù)源中各區(qū)域的位置與結(jié)果中的位置一樣,只需要隨著公式右拉發(fā)生變化即可。
(注:實(shí)際上將基點(diǎn)$A$1改為A$1的話,列偏移這個(gè)參數(shù)是可以省略的,這是利用把基點(diǎn)混合引用實(shí)現(xiàn)了調(diào)整列的位置。不過(guò)這樣寫(xiě)的話,公式對(duì)于新手來(lái)說(shuō)更加難以理解。)
最后是區(qū)域的高度和寬度,$J$2-$J$1+1用這個(gè)作為高度,也就是結(jié)束日期-開(kāi)始日期+1,具體的天數(shù)作為高度。
寬度當(dāng)然就是1了。
用OFFSET指定了一個(gè)區(qū)域之后,再外面加個(gè)SUM完成求和,就是這個(gè)公式的來(lái)龍去脈。
不過(guò)僅靠這么解釋,還是有些朋友聽(tīng)不明白,那么可以通過(guò)這篇文章先去了解一下OFFSET函數(shù)的基本知識(shí):offset函數(shù)的使用方法
SUM+INDEX
第五個(gè)公式是:=SUM(INDEX(B2:B29,MATCH($J$1,$A2:$A29,0)):INDEX(B2:B29,MATCH($J$2,$A2:$A29,0)))
這個(gè)公式的用法就比較稀罕了,利用了INDEX的一個(gè)鮮為人知的特性,公式的套路倒是很常見(jiàn),就是INDEX+MATCH這對(duì)經(jīng)典組合,可以通過(guò)本文來(lái)來(lái)了解:index+match函數(shù)組合在excel中的應(yīng)用
那么稀罕這何處呢?
只能引用這個(gè)函數(shù)說(shuō)明中的一句話來(lái)解釋:
函數(shù) INDEX 的結(jié)果為一個(gè)引用,且在其他公式中也被解釋為引用。根據(jù)公式的需要,函數(shù) INDEX 的返回值可以作為引用或是數(shù)值。例如,公式 CELL("width",INDEX(A1:B2,1,2)) 等價(jià)于公式 CELL("width",B1)。CELL 函數(shù)將函數(shù) INDEX 的返回值作為單元格引用。而在另一方面,公式 2*INDEX(A1:B2,1,2) 將函數(shù) INDEX 的返回值解釋為 B1 單元格中的數(shù)字。
對(duì)于這段話,涉及到很多基礎(chǔ)概念,如果你無(wú)法理解的話,趕快補(bǔ)課:公式函數(shù)入門基礎(chǔ)知識(shí)1:公式和函數(shù)
小結(jié)
就這個(gè)問(wèn)題本身來(lái)說(shuō),使用條件求和的思路無(wú)疑是最佳解決方案,不過(guò)這個(gè)例子也是動(dòng)態(tài)區(qū)域的典型案例,OFFSET函數(shù)和INDIRECT函數(shù)做構(gòu)造動(dòng)態(tài)區(qū)域方面有無(wú)可取代的地位(使用INDIRECT函數(shù)解決本例也是可以的),另外一個(gè)亮點(diǎn)就是INDEX的出現(xiàn),本例中并沒(méi)有顯示出INDEX的優(yōu)勢(shì),不過(guò)如果將問(wèn)題再進(jìn)一步復(fù)雜化,求和區(qū)域的確定增加兩個(gè)條件的話:
其他幾個(gè)公式都要做很大的改動(dòng)才行,公式的復(fù)雜性也會(huì)增加,而INDXE依然如舊,有興趣的朋友可以自己去測(cè)試一下。
最后這個(gè)復(fù)雜的區(qū)域求和問(wèn)題,也是INDEX函數(shù)高級(jí)應(yīng)用這節(jié)課的一個(gè)內(nèi)容,就不在本文羅嗦了。
聯(lián)系客服