REDUCE函數(shù)
=REDUCE(初始值,數(shù)組,LAMBDA(迭代器,數(shù)組的每個(gè)值,運(yùn)算))
第1參數(shù)是迭代器的初始值,第2參數(shù)是一個(gè)數(shù)組,第3參數(shù)是LAMBDA函數(shù)。簡單來說,就是用LAMBDA函數(shù)將初始值和數(shù)組的每個(gè)值進(jìn)行迭代的運(yùn)算,最后返回一個(gè)結(jié)果。
具體應(yīng)用
統(tǒng)計(jì)“二班”的人數(shù),公式為=REDUCE(0,A3:A15,LAMBDA(x,y,IF(y="二班",x+1,x)))。
簡單說下這個(gè)公式的意思,首先把ruduce的第一參數(shù)0傳遞給x,作為初始值;再把第二參數(shù)A3:A15中的每個(gè)值傳遞給y,然后讓x和y執(zhí)行后面的if運(yùn)算。
如果y(A列的每個(gè)班級(jí))等于“二班”,就讓x+1,否則還是原來的x。這里x相當(dāng)于一個(gè)計(jì)數(shù)器。然后執(zhí)行下一個(gè)班級(jí),重復(fù)這個(gè)過程。
學(xué)過一點(diǎn)vba的同學(xué)很容易理解這個(gè)函數(shù)的意思,就是一個(gè)循環(huán)迭代的過程。
2.合并名單
合并各班級(jí)的姓名,在F23單元格輸入公式,=MID(REDUCE("",A$22:A$34,LAMBDA(x,y,IF(y=E23,x&"\"&OFFSET(y,,1),x))),2,99),向下填充。
下圖A列是錄入的不規(guī)范數(shù)據(jù),現(xiàn)在要將包含D列的單詞全部替換為E列的單詞,即A列的每個(gè)單元格要執(zhí)行多次替換,在G40單元格輸入公式,=REDUCE(A40,D$40:D$43,LAMBDA(x,y,SUBSTITUTE(x,y,OFFSET(y,,1)))),向下填充。
如果是用老版的函數(shù),只能使用多次substitute進(jìn)行替換,而有了REDUCE這個(gè)迭代函數(shù),公式就短多了。
https://pan.baidu.com/s/1Uxv-xvnCpm4_w9icdxMzSg
聯(lián)系客服