文/孔述
在數(shù)據(jù)的世界里,動態(tài)求和如同一場精心編排的舞蹈,它要求我們在不斷變化的數(shù)據(jù)維度中尋找規(guī)律,精準(zhǔn)地計(jì)算出所需的結(jié)果。
事實(shí)上,在實(shí)際工作中,多條件求和是日常工作中使用頻率最高的需求之一。然而,由于數(shù)據(jù)出現(xiàn)的維度和條件常不是一成不變,尤其是特定的條件,包括日期、部門、人員等因素常常變動,即這些動態(tài)條件給求和計(jì)算帶來一定的難度。
因此,動態(tài)求和是日常工作繞不開的課題。下面探討如何突破與應(yīng)對日常工作中的一些動態(tài)求和場景及其解決方案:
注意:為便于計(jì)算,除姓名和部門外,一般盡量使其他數(shù)據(jù)都宜以數(shù)值型填列。如:下面月份其實(shí)是數(shù)值型,經(jīng)過設(shè)置后,才顯示為*月。設(shè)置如下:
工作量(可以理解為銷售、產(chǎn)量、成績等)情況統(tǒng)計(jì)表如下:
需求場景:
人員動態(tài):求某人截止某月的工作量,如:孫六截止3月累計(jì)工作量。
部門、月份動態(tài):求總經(jīng)部3月工作量和。(人名有唯一性,但所屬部門可能“一對多”,本例除行政部僅1 外,其他均有多個。)
部門動態(tài)、月份動態(tài):求某部門某月的累計(jì)工作量,如:總經(jīng)部截止3月累計(jì)工作量。
人數(shù)動態(tài):某兩人截止某月的累計(jì)工作量;如:孫六、吳九5月止合計(jì)工作量。
起止月份動態(tài):某人從某月起,截止某月的累計(jì)工作量;如:孫六3月至5月工作量總額
部門動態(tài)、起止月份動態(tài):某部門,自某月起、截止某月的累計(jì)工作量;(人名不同,但所屬部門可能相同),如:求總經(jīng)部起自3月到5月止累計(jì)和
這些動態(tài)數(shù)據(jù)需求在現(xiàn)實(shí)工作中查詢及預(yù)測、方案的選擇上應(yīng)用十分廣泛。
場景1:孫六截止3月累計(jì)。即在數(shù)組內(nèi)求關(guān)于孫六1-3月的數(shù)據(jù)和。
人員、月分為動態(tài),方法有多種:
方法1=SUM(OFFSET(B2,MATCH(B15,B3:B11,0),,,MATCH(C14,B2:O2,0))
人名由B5定,而月份由C14定,OFFSET完成行列移動實(shí)現(xiàn)“區(qū)域構(gòu)建”。再以此區(qū)域數(shù)據(jù)求和 。
方法2=SUM(OFFSET(D6,0,0,1,$C$14)) 直接由D6行移動。原理同上。
方法3=SUM(D6:OFFSET(C6,0,C14)) 求和區(qū)域的構(gòu)建的“終止坐標(biāo)”用OFFSET產(chǎn)生,而OFFSET又取決于C14,C14動態(tài),故求和動態(tài)。
方法4=SUM(D6:INDEX(6:6,MATCH(C14,2:2,))) 原理同方法3,不同處在求和區(qū)域的構(gòu)建的“終止坐標(biāo)”用INDEX+MATCH產(chǎn)生。MATch函數(shù)參根據(jù)C14動態(tài)決定。
方法5=SUM(D6:XLOOKUP(C14,2:2,6:6)) 原理同方法3,不同處在求和區(qū)域的構(gòu)建的“終止坐標(biāo)”用XLOOKUP查找函數(shù)產(chǎn)生。
場景2:求總經(jīng)部3月和 部門及月份動態(tài),且總經(jīng)部有若干個
C18=SUMPRODUCT(($C$3:$C$11=$B$19)*$D$3:$O$11*($D$2:$O$2=$C$14)) 以SUMPRODUCT條件求和,部門由$B$19動態(tài)決定,月份行由$C$14動態(tài)決定,而求和區(qū)域$D$3:$O$11。
場景3:總經(jīng)部截止3月累計(jì) 部門、月份動態(tài),累計(jì)
D19=SUMPRODUCT((C3:C11=B19)*D3:O11*(D2:O2<=C14))
原理同場景3。
場景4:孫六、吳九5月止合計(jì)工作量 孫六、吳九為動態(tài)
C2=SUMPRODUCT((B3:B11=B17)*D3:O11*(D2:O2<=D14))+SUMPRODUCT((B3:B11=B20)*D3:O11*(D2:O2<=D14))
原理同場景2、3。只是月分條件使用<=D14動態(tài)決定。另一條件分別是指定單元格人名(動態(tài)的),二都相加。
場景5:孫六3月至5月工作量總額 動態(tài)起止月
F22=SUM(XLOOKUP(C14,2:2,6:6):XLOOKUP(D14,2:2,6:6))
在指定人名行,用XLOOKUP()根據(jù)起始月份找到求和區(qū)域,再以SUM求和。 當(dāng)然這個“行”也可以O(shè)FFSET動態(tài)解決。
場景6:求總經(jīng)部起自3月到5月止累計(jì)和
C24=SUMPRODUCT(($C$3:$C$11=$B$19)*$D$3:$O$11*($D$2:$O$2=C14))
原理同場景2、3. 部門列由$B$19(動態(tài)部門單元格決定),而時間段則由取止月份決定,>起始月,<截止月。