某工廠的PMC接到銷售要求,原來每天需要出6個貨柜的計劃現(xiàn)在變更成每天出3個貨柜,這3個貨柜不是直接減少,而是把原計劃中的4號貨柜到6號貨柜自動換行到貨柜1號到3號的下方,日期累加。
希望設(shè)計一個函數(shù)公式,實(shí)現(xiàn)表格的一鍵變形轉(zhuǎn)換
效果如下圖1所示:
圖 1
分析一下這個需求,從源數(shù)據(jù)中觀察,可以發(fā)現(xiàn)這是一個對等的數(shù)據(jù)區(qū)域,也就是把貨柜1到貨柜6從中間分開,并累加。累加好的同時還需要按日期排序,這樣就實(shí)現(xiàn)了上述問題的表格變形轉(zhuǎn)換。
根據(jù)這個需求立即想到WPS更新的新函數(shù)VSTACK和HSTACK,用這兩個函數(shù)可以實(shí)現(xiàn)數(shù)組重新堆疊,完成后再用排序函數(shù)SORT對日期排序就可以了。
貨柜1號到3號前面是有日期的,而貨柜3號到6號前面是沒有日期的,如果直接垂直合并就會導(dǎo)致沒有日期,從而無法進(jìn)行按日期排序,所以合并前錄入水平合并函數(shù)HSTACK:
錄入公式:
=HSTACK(B3:B10,F3:H10)
公式釋義:
把兩個區(qū)域進(jìn)行合并(水平方向)
效果如下圖2所示:
圖 2
水平方向合并完成后,就需要垂直方向合并了,這次的合并函數(shù)是VSTACK:
錄入公式:
=VSTACK(B3:E10,HSTACK(B3:B10,F3:H10))
公式釋義:
把兩個區(qū)域進(jìn)行合并(垂直方向)
效果如下圖3所示:
圖 3
通過上面的兩次區(qū)域合并,還不能算成功,還需要要進(jìn)行排序,排序的目的是把同一天的日期連在一起,這樣就實(shí)現(xiàn)了源數(shù)據(jù)中一天出6個貨柜的一行,變成一天出3個貨柜的二行。
錄入函數(shù):
=SORT(VSTACK(B3:E10,HSTACK(B3:B10,F3:H10)))
函數(shù)釋義:
SORT函數(shù)如果不錄入第二參數(shù),代表默認(rèn)排序的數(shù)據(jù)為第一列(日期),排序的方式為升序(從小到大)。這里用的是直接法,相當(dāng)于把日期進(jìn)行升序排序,這樣因?yàn)槿掌诖笮〉脑?,排序完成后就?shí)現(xiàn)日期相同的在一起了。
效果如下圖4所示:
如果標(biāo)題選擇的手工錄入的話,到上一步已經(jīng)完成了表格轉(zhuǎn)換變形的需求了,這里為了讓大家更加好理解VSTAKC和HSTACK,繼續(xù)在嵌套一層標(biāo)題。
錄入函數(shù):
=VSTACK(B2:E2,SORT(VSTACK(B3:E10,HSTACK(B3:B10,F3:H10))))
函數(shù)釋義:
把B2:E2,也就是源表中的標(biāo)題按垂直方向合并到排序后的結(jié)果中。
效果如下圖5所示:
VSTAKC和HSTACK這兩個函數(shù)的應(yīng)運(yùn)場景非常多,最為常見的就是區(qū)域重組,可以進(jìn)行任意方向的合并,如上面的案例中的水平合并,垂直合并。
合并不僅僅是區(qū)域,有時候不想在不同的單元格錄入多個函數(shù),可以用這兩個函數(shù)進(jìn)行函數(shù)合并,從而實(shí)現(xiàn)一個“大”的公式,這樣的效果就是表格函數(shù)建模中的“一鍵轉(zhuǎn)換”,也就是一個公式搞定需求。后續(xù)有需求變化的時候,只需要在這個公式中變更就可以了。
聯(lián)系客服