excelperfect
引言:本文的練習(xí)整理自chandoo.org。多一些練習(xí),想想自己會怎么解決這個問題,看看別人又是怎樣解決的,這樣能夠快速提高Excel公式編寫水平。
本次的練習(xí)是:示例數(shù)據(jù)如下圖1所示。
圖1
現(xiàn)在,想根據(jù)列A中的數(shù)據(jù)對列B中的值匯總。例如,對于列A中的“A”來說,在列B中對應(yīng)的值是:1、13、14、15、16、17、18,其和為94。
我們將單元格區(qū)域A2:A21命名為“D”,單元格區(qū)域B2:B21命名為“V”。
要求只能使用公式,不能使用VBA,僅能使用上述兩個命名區(qū)域名稱,不能使用填充功能填充空單元格。
請寫下你的公式。
解決方案
公式1:數(shù)組公式。
=SUM(MMULT(N(LOOKUP(ROW(D),IF(D<>'',ROW(D)))=TRANSPOSE(IF(D='A',ROW(D)))),ROW(D)^0)*V)
公式2:數(shù)組公式。
=SUM(IFERROR(IF(MATCH(LOOKUP(ROW(D),IF(D<>'',ROW(D))),IF(D='A',ROW(D)),0),V),0))
公式3:數(shù)組公式。
=SUM(ISNUMBER(MATCH(LOOKUP(ROW(D),IF(D<>'',ROW(D))),IF(D='A',ROW(D)),0))*V)
公式4:數(shù)組公式。
=SUM(IF(LOOKUP(ROW(D),ROW(D)/(D<>''),D)='A',V))
或者:
=SUM((LOOKUP(ROW(D),ROW(D)/(D<>''),D)='A')*V)
或者:
=SUMPRODUCT((LOOKUP(ROW(D),ROW(D)/(D<>''),D)='A')*V)
公式5:數(shù)組公式。
=SUM((LOOKUP(ROW(D),IF(D<>'',ROW(D)))=TRANSPOSE(IF(D='A',ROW(D))))*V)
公式6:數(shù)組公式。
=SUM((INDEX(D,N(IF({1},MATCH(ROW(D),IF(NOT(ISBLANK(D)),ROW(D),''),1))))='A')*V)
或者:
=SUMPRODUCT(--(INDEX(D,N(IF({1},MATCH(ROW(D),IF(NOT(ISBLANK(D)),ROW(D),''),1))))='A'),V)
公式7:
=SUM(FILTER(V,IF(V,LOOKUP(V,V/(D<>''),D))='A'))
適用于Office365。
……
公式并沒有給出詳細(xì)的解析,有興趣的朋友可以參照前面推送的有關(guān)分析公式的文章對這些公式進(jìn)行解析,相信對理解Excel函數(shù),編寫公式解決問題會有很大的幫助。
聯(lián)系客服