欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

搞定分段數(shù)字分別排序! wps中l(wèi)ambda自定義+map循環(huán)遍歷

  發(fā)布時間:2025-09-16 11:11:04   作者:佚名   我要評論
wps表格中的內(nèi)容有很多符號,想要快速提取數(shù)字并升序排列,該怎么實(shí)現(xiàn)呢?我們需要使用函數(shù)和公式實(shí)現(xiàn),詳細(xì)請看下文介紹

問題求助SOS:有沒有大神幫我解決這個問題?。课业臄?shù)據(jù)在單元格內(nèi)是一串長數(shù)字,數(shù)字字符串被若干個逗號分成了若干段,我想對每段的數(shù)字分別從小到大排序后,輸出到新的單元格,有辦法設(shè)置一個公式一次性實(shí)現(xiàn)嗎?

小編想說,這種問題是非??简?yàn)我們對Excel或WPS綜合運(yùn)用的能力,它具有非常濃重的真實(shí)的職場辦公的痕跡。建議大家一定要學(xué)習(xí)它的解題思路,讓我們從初級辦公向高級辦公邁進(jìn),不要只是停留在簡單的vlookup入門函數(shù)上。

當(dāng)然了,這個問題是肯定能實(shí)現(xiàn)的,也非常的有趣實(shí)用。

簡化數(shù)據(jù)源,如下圖所示:

A列是一列數(shù)據(jù),我們發(fā)現(xiàn)每個單元格內(nèi)都是由逗號間隔開的若干段數(shù)字字符串,且每段數(shù)字的長度也是不固定的。那么,我們最終想要的結(jié)果就是:將每個單元格內(nèi)的各段數(shù)字重新單獨(dú)升序(從小到大)排序后,輸出新的結(jié)果放置到B列。(注意:只是對每段數(shù)字的排序,各段之間互不干涉)

這種問題,放在以前,小編也是一次性解決不了的,但是Excel和WPS表格都更新了很多類似于VBA的高級邏輯迭代函數(shù),它們的出現(xiàn)大大增強(qiáng)了我們對數(shù)據(jù)的處理能力。以前我們解決不了的、需要借助很多輔助列的、等等問題都能輕松應(yīng)對。

這道題就用到了lambda自定義、map循環(huán)遍歷,解決分段數(shù)字每段排序的問題,以前不敢想的都實(shí)現(xiàn)了!

我們的思路肯定是:將單元格每段的數(shù)字拆分到不同單元格中,然后對每個單元格的數(shù)字分別排序,最后在合并起來。

首先使用TEXTSPLIT函數(shù)進(jìn)行拆分列:

=TEXTSPLIT(A2,",")

使用列分隔符逗號,將A2單元格內(nèi)的字符串進(jìn)行分列,將各段數(shù)字以數(shù)組溢出的形式放置在一行多列當(dāng)中。

由于我們要對B2~F2單元格的每段數(shù)字分別排序,為了便于后續(xù)自定義函數(shù)、循環(huán)遍歷函數(shù)的理解。我們先來解決B2單元格這一段數(shù)字“321”的排序。

使用REGEXP正則表達(dá)式函數(shù):

=REGEXP(A6,"\d")

\d:表示任意的單個數(shù)字

借助這個正則表達(dá)式,可以將A6單元格的數(shù)字以數(shù)組溢出的方式分別提取到一行多列的單元格中。

向外嵌套TOCOL函數(shù):

=TOCOL(REGEXP(A6,"\d"))

將一行三列的數(shù)組數(shù)據(jù)轉(zhuǎn)置為一列三行的數(shù)據(jù)(行轉(zhuǎn)列)。

向外嵌套SORT函數(shù):

=SORT(TOCOL(REGEXP(A6,"\d")),1,1)

對這個一列三行的數(shù)組溢出區(qū)域,以第一列(只有1列)為排序依據(jù),以升序?yàn)榕判蝽樞蜻M(jìn)行排序。

向外嵌套CONCAT函數(shù):

=CONCAT(SORT(TOCOL(REGEXP(A6,"\d")),1,1))

將排序好的一列多行的數(shù)組區(qū)域合并至一個單元格中。

至此,我們對B2單元格,這一個樣板數(shù)據(jù)進(jìn)行了升序排序,那么我們想要依次對C2、D2、E2、F2都進(jìn)行這樣重復(fù)的排序工作,該怎么實(shí)現(xiàn)呢?

LAMBDA函數(shù)是自定義函數(shù)的構(gòu)造器,是Excel365與WPS表格新增的“函數(shù)生成器”,允許我們自定義匿名函數(shù),無需VBA就能創(chuàng)建可重復(fù)使用的計算邏輯。

基礎(chǔ)結(jié)構(gòu)參數(shù):

LAMBDA(單個元素, 處理邏輯)

所以我們定義TEXTSPLIT函數(shù)拆分出來的每段數(shù)字(比如B2的“321”)為參數(shù)x,然后對這個參數(shù)x定義的計算規(guī)則就是我們上面所展示的B6單元格的公式運(yùn)算規(guī)則:

CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1))

也就是說,對拆分出來的每段數(shù)字字符串,都執(zhí)行這樣規(guī)則的排序。原理很簡單吧!

完善公式為:

=LAMBDA(x,CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1)))

但是目前不會輸出正常值的,因?yàn)長AMBDA只是一個“函數(shù)構(gòu)造器”,只構(gòu)造了邏輯,而不會輸出實(shí)際值。

MAP函數(shù)是數(shù)組迭代(遍歷)處理器,屬于數(shù)組函數(shù)(“迭代計算類”函數(shù))。是對數(shù)組中的每個元素批量應(yīng)用自定義邏輯(通過LAMBDA定義),并返回同維度的結(jié)果數(shù)組。

強(qiáng)大優(yōu)勢:

自動遍歷輸入數(shù)組的每個元素,相當(dāng)于“循環(huán)執(zhí)行”LAMBDA函數(shù)。是Excel“動態(tài)數(shù)組”功能的重要組件,支持批量處理數(shù)據(jù)而無需下拉填充公式。

函數(shù)結(jié)構(gòu)

MAP(待處理數(shù)組,LAMBDA(單個元素, 處理邏輯))

所以最終公式是這樣的:

=MAP(TEXTSPLIT(A2,","),LAMBDA(x,CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1))))

第二參數(shù):

LAMBDA(x,CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1)))

定義了拆分后的每段數(shù)字的排序規(guī)則。

第一參數(shù):

是TEXTSPLIT拆分出來的每段數(shù)字。運(yùn)用第二參數(shù)的排序規(guī)則,對第一參數(shù)拆分后的每段數(shù)字依次循環(huán)遍歷進(jìn)行處理。

用LAMBDA定義“數(shù)字排序”規(guī)則,MAP負(fù)責(zé)對數(shù)組中的每個數(shù)字應(yīng)用該規(guī)則。簡單說:LAMBDA是“大腦”定義邏輯,MAP是“雙手”執(zhí)行邏輯。

最后的最后使用TEXTJOIN函數(shù):

=TEXTJOIN(",",,MAP(TEXTSPLIT(A2,","),LAMBDA(x,CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1)))))

將排序好的各段數(shù)字用逗號合并至一個單元格即可。

推薦閱讀:wps星期排序怎么弄? WPS利用AI編寫代碼對行內(nèi)星期正向排序的技巧

相關(guān)文章

最新評論