Hi,我是偏愛函數(shù)公式,愛用 Excel 圖表管理倉庫的大叔 Mr 趙~在日常工作中,我們經(jīng)常會碰到按指定的條件重復(fù)數(shù)據(jù)的問題,比如按指定數(shù)量重復(fù)標(biāo)簽的個(gè)數(shù),根據(jù)箱規(guī)拆分?jǐn)?shù)量等等。今天,我們就來看看在 Office365 中,它的各種神奇做法。本文重在擴(kuò)展思路,大家跟著我的步伐,往下看看吧。如下圖,按 C3 單元格的打印份數(shù)重復(fù) B3 單元格的標(biāo)簽名稱,效果如 E 列:對于單個(gè)標(biāo)簽,我們可以使用 Row 函數(shù)下拉擴(kuò)展,從而進(jìn)行判斷。=IF(ROW(A1)<=$C$3,$B$3,'') 如果你是 Office365 版本,擴(kuò)展只需要一個(gè) EXPAND 函數(shù)。EXPAND 函數(shù)的作用,是將原來的區(qū)域按指定的行數(shù)和列數(shù)進(jìn)行擴(kuò)充。=EXPAND(區(qū)域,擴(kuò)充的總行數(shù),擴(kuò)充的總列數(shù),原區(qū)域以外顯示的值) 第 1 參數(shù)是 B3 單元格,表示待擴(kuò)充的區(qū)域;第 2 參數(shù)獲取 C3 單元格的數(shù)值,表示擴(kuò)充的總行數(shù),是 6 行,第 3 參數(shù),省略未寫,默認(rèn)擴(kuò)充為 1 列;第 4 參數(shù),獲取 B3 單元格的文本,用'A'填充原區(qū)域以外的位置,從而達(dá)到重復(fù)的效果。 如果想為這組結(jié)果添加標(biāo)題,可以用 VSTACK 函數(shù)拼接,這個(gè)函數(shù)的作用是把各個(gè)參數(shù)縱向堆疊在一起。=VSTACK(參數(shù) 1,參數(shù) 2,參數(shù) 3……)=VSTACK(B2,EXPAND(B3,C3,,B3)) 上面使用的新函數(shù),Expand 函數(shù)和 Vstack 函數(shù),目前 WPS 還沒更新。不過,使用 WPS 的小伙伴(更新到新版本),可以用 SEQUENCE 函數(shù),同樣能達(dá)到填充的目的:PS : 由于 WPS 目前還沒有更新動態(tài)數(shù)組,所以使用 WPS 還需要使用數(shù)組三鍵哦~ ,Excel2021 及以上版本直接回車就行。首先用 SEQUENCE 函數(shù)根據(jù) C3 單元格的數(shù)值生成一組數(shù)字序列。=SEQUENCE(行數(shù),[列數(shù)],[開始數(shù)],[增量])=SEQUENCE(C3) =SEQUENCE(6) 也就是該函數(shù)公式生成為 6 行 1 列,開始值為 1,增值為 1 的序列。然后以這組序列作為 IF 函數(shù)的判斷條件,返回 B3 單元格的內(nèi)容。PS : 非 0 的值都為真(true),所以 if 函數(shù)判斷的時(shí)候,SEQUENCE 函數(shù)生成的序列都為 true。但是在實(shí)際操作指定重復(fù)次數(shù)的時(shí)候,不會只對單個(gè)標(biāo)簽進(jìn)行重復(fù),一般是多個(gè)標(biāo)簽一起。如下圖,根據(jù) C 列的打印份數(shù),重復(fù) B 列多個(gè)標(biāo)簽名稱,效果如 E 列:從上圖 E 列的效果可以看出,我們需要用 VSTACK 函數(shù)對每個(gè)標(biāo)簽名稱依次循環(huán)拼接。這里就需要一個(gè) REDUCE 函數(shù),=REDUCE(初始值,遍歷的數(shù)組,LAMBDA(x,y,計(jì)算表達(dá)式))第 2 個(gè)參數(shù)是循環(huán)遍歷的區(qū)域;第 3 個(gè)參數(shù)是 LAMBDA 函數(shù)運(yùn)算的表達(dá)式,它有兩個(gè)參數(shù),x 指向初始累加值,y 指向第 2 參數(shù)即被遍歷的區(qū)域。 =REDUCE(B2,B3:B5,LAMBDA(x,y,VSTACK(x,EXPAND(y,OFFSET(y,,1),,y)))) 第 1 個(gè)參數(shù)為 B2 單元格,是初始值;第 2 個(gè)參數(shù)為 B3:B5 單元格區(qū)域,需要遍歷的數(shù)據(jù);第 3 個(gè)參數(shù)是一個(gè) LAMBDA 函數(shù),它有兩個(gè)變量 x 和 y,用來計(jì)算表達(dá)式:=VSTACK(x,EXPAND(y,OFFSET(y,,1),,y)))) x 作為累加值,指向 REDUCE 的第 1 參數(shù)為 B2,也就是「標(biāo)簽名稱」。y 指向 REDUCE 的第 2 參數(shù) B3:B5 區(qū)域。LAMBDA 遍歷 B3:B5 每一個(gè)單元格,第 1 次運(yùn)行表達(dá)式:=VSTACK(B2,EXPAND(B3,OFFSET(B3,,1),,B3)))) 然后將上面的結(jié)果 E2:E5 作為 LAMBDA 新的第 1 參數(shù),B4 為第 2 參數(shù),繼續(xù)第 2 次執(zhí)行 LAMDA 表達(dá)式:=VSTACK(E2:E5,EXPAND(B4,OFFSET(B4,,1),,B4)) 依次類推,直至遍歷完 B3:B5 的所有單元格,將 LAMBDA 第 1 參數(shù)不斷拼接,結(jié)果如下圖 I 列:REDUCE 函數(shù)雖然是一個(gè)比較難的函數(shù),但是,由于有了它的存在,給我們提供了更加靈活的處理方案。今天我們通過指定的次數(shù)重復(fù)數(shù)據(jù)的案例,切實(shí)感受到了 365 版新函數(shù)的神奇用法!重在擴(kuò)展大家思路~本文,我們主要涉及了三個(gè)比較常用的新函數(shù)。(目前它們還沒在 WPS 中出現(xiàn)。)? EXPAND 函數(shù)可以按指定的行數(shù)和列數(shù)自動擴(kuò)充區(qū)域;? VSTACK 函數(shù)將對多個(gè)區(qū)域自由垂直拼接,比如添加標(biāo)題;? REDUCE 函數(shù)通過遍歷,循環(huán)調(diào)用 LAMBDA 函數(shù)表達(dá)式生成最終結(jié)果,比如對多個(gè)數(shù)據(jù)標(biāo)簽完成數(shù)量的復(fù)制。Excel 里的函數(shù)有 400 多個(gè),但我們常用的其實(shí)只有幾十個(gè)。如果本篇文章對你有幫助或有所啟發(fā),歡迎「點(diǎn)贊」、「評論」和「轉(zhuǎn)發(fā)」哦,你們的支持是我分享的動力~
|