搞定分段數(shù)字分別排序! wps中l(wèi)ambda自定義+map循環(huán)遍歷
問題求助SOS:有沒有大神幫我解決這個(gè)問題啊?我的數(shù)據(jù)在單元格內(nèi)是一串長數(shù)字,數(shù)字字符串被若干個(gè)逗號(hào)分成了若干段,我想對(duì)每段的數(shù)字分別從小到大排序后,輸出到新的單元格,有辦法設(shè)置一個(gè)公式一次性實(shí)現(xiàn)嗎?
小編想說,這種問題是非??简?yàn)我們對(duì)Excel或WPS綜合運(yùn)用的能力,它具有非常濃重的真實(shí)的職場辦公的痕跡。建議大家一定要學(xué)習(xí)它的解題思路,讓我們從初級(jí)辦公向高級(jí)辦公邁進(jìn),不要只是停留在簡單的vlookup入門函數(shù)上。
當(dāng)然了,這個(gè)問題是肯定能實(shí)現(xiàn)的,也非常的有趣實(shí)用。
簡化數(shù)據(jù)源,如下圖所示:
A列是一列數(shù)據(jù),我們發(fā)現(xiàn)每個(gè)單元格內(nèi)都是由逗號(hào)間隔開的若干段數(shù)字字符串,且每段數(shù)字的長度也是不固定的。那么,我們最終想要的結(jié)果就是:將每個(gè)單元格內(nèi)的各段數(shù)字重新單獨(dú)升序(從小到大)排序后,輸出新的結(jié)果放置到B列。(注意:只是對(duì)每段數(shù)字的排序,各段之間互不干涉)

這種問題,放在以前,小編也是一次性解決不了的,但是Excel和WPS表格都更新了很多類似于VBA的高級(jí)邏輯迭代函數(shù),它們的出現(xiàn)大大增強(qiáng)了我們對(duì)數(shù)據(jù)的處理能力。以前我們解決不了的、需要借助很多輔助列的、等等問題都能輕松應(yīng)對(duì)。
這道題就用到了lambda自定義、map循環(huán)遍歷,解決分段數(shù)字每段排序的問題,以前不敢想的都實(shí)現(xiàn)了!
我們的思路肯定是:將單元格每段的數(shù)字拆分到不同單元格中,然后對(duì)每個(gè)單元格的數(shù)字分別排序,最后在合并起來。
首先使用TEXTSPLIT函數(shù)進(jìn)行拆分列:
=TEXTSPLIT(A2,",")
使用列分隔符逗號(hào),將A2單元格內(nèi)的字符串進(jìn)行分列,將各段數(shù)字以數(shù)組溢出的形式放置在一行多列當(dāng)中。

由于我們要對(duì)B2~F2單元格的每段數(shù)字分別排序,為了便于后續(xù)自定義函數(shù)、循環(huán)遍歷函數(shù)的理解。我們先來解決B2單元格這一段數(shù)字“321”的排序。
使用REGEXP正則表達(dá)式函數(shù):
=REGEXP(A6,"\d")
\d:表示任意的單個(gè)數(shù)字
借助這個(gè)正則表達(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)
對(duì)這個(gè)一列三行的數(shù)組溢出區(qū)域,以第一列(只有1列)為排序依據(jù),以升序?yàn)榕判蝽樞蜻M(jìn)行排序。

向外嵌套CONCAT函數(shù):
=CONCAT(SORT(TOCOL(REGEXP(A6,"\d")),1,1))
將排序好的一列多行的數(shù)組區(qū)域合并至一個(gè)單元格中。

至此,我們對(duì)B2單元格,這一個(gè)樣板數(shù)據(jù)進(jìn)行了升序排序,那么我們想要依次對(duì)C2、D2、E2、F2都進(jìn)行這樣重復(fù)的排序工作,該怎么實(shí)現(xiàn)呢?
LAMBDA函數(shù)是自定義函數(shù)的構(gòu)造器,是Excel365與WPS表格新增的“函數(shù)生成器”,允許我們自定義匿名函數(shù),無需VBA就能創(chuàng)建可重復(fù)使用的計(jì)算邏輯。
基礎(chǔ)結(jié)構(gòu)參數(shù):
LAMBDA(單個(gè)元素, 處理邏輯)
所以我們定義TEXTSPLIT函數(shù)拆分出來的每段數(shù)字(比如B2的“321”)為參數(shù)x,然后對(duì)這個(gè)參數(shù)x定義的計(jì)算規(guī)則就是我們上面所展示的B6單元格的公式運(yùn)算規(guī)則:
CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1))
也就是說,對(duì)拆分出來的每段數(shù)字字符串,都執(zhí)行這樣規(guī)則的排序。原理很簡單吧!
完善公式為:
=LAMBDA(x,CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1)))
但是目前不會(huì)輸出正常值的,因?yàn)長AMBDA只是一個(gè)“函數(shù)構(gòu)造器”,只構(gòu)造了邏輯,而不會(huì)輸出實(shí)際值。

MAP函數(shù)是數(shù)組迭代(遍歷)處理器,屬于數(shù)組函數(shù)(“迭代計(jì)算類”函數(shù))。是對(duì)數(shù)組中的每個(gè)元素批量應(yīng)用自定義邏輯(通過LAMBDA定義),并返回同維度的結(jié)果數(shù)組。
強(qiáng)大優(yōu)勢(shì):
自動(dòng)遍歷輸入數(shù)組的每個(gè)元素,相當(dāng)于“循環(huán)執(zhí)行”LAMBDA函數(shù)。是Excel“動(dòng)態(tài)數(shù)組”功能的重要組件,支持批量處理數(shù)據(jù)而無需下拉填充公式。
函數(shù)結(jié)構(gòu)
MAP(待處理數(shù)組,LAMBDA(單個(gè)元素, 處理邏輯))
所以最終公式是這樣的:
=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ī)則,對(duì)第一參數(shù)拆分后的每段數(shù)字依次循環(huán)遍歷進(jìn)行處理。
用LAMBDA定義“數(shù)字排序”規(guī)則,MAP負(fù)責(zé)對(duì)數(shù)組中的每個(gè)數(shù)字應(yīng)用該規(guī)則。簡單說:LAMBDA是“大腦”定義邏輯,MAP是“雙手”執(zhí)行邏輯。

最后的最后使用TEXTJOIN函數(shù):
=TEXTJOIN(",",,MAP(TEXTSPLIT(A2,","),LAMBDA(x,CONCAT(SORT(TOCOL(REGEXP(x,"\d")),1,1)))))
將排序好的各段數(shù)字用逗號(hào)合并至一個(gè)單元格即可。

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

怎么根據(jù)總箱數(shù)編排箱號(hào)? wps中sum+if+&公式快速搞定
如何根據(jù)總箱數(shù)排箱號(hào)序號(hào)?小編給到的解決方案是sum+if+&,運(yùn)用“累計(jì)”與“邏輯”的思維,快速實(shí)現(xiàn)最終的目標(biāo),詳細(xì)請(qǐng)看下文介紹2025-07-30
效率翻倍! wps中regexp+asc+evaluate公式快速結(jié)算雜亂內(nèi)容數(shù)據(jù)的技巧
wps表格中記錄的內(nèi)容,有單位有數(shù)據(jù),想要根據(jù)記錄快速計(jì)算出需要計(jì)算的結(jié)果,我們可以利用regexp+asc+evaluate函數(shù)快速提取數(shù)據(jù)計(jì)算,詳細(xì)請(qǐng)看下文介紹2025-07-30
實(shí)現(xiàn)動(dòng)態(tài)裝箱計(jì)算! wps中ddb+text函數(shù)公式的使用技巧
wps中有很多函數(shù)組合到一起會(huì)達(dá)到神奇的效果,比如我們今天用到的ddb+text函數(shù),可以輕松實(shí)現(xiàn)現(xiàn)動(dòng)態(tài)裝箱計(jì)算,詳細(xì)如下2025-07-30
分享一個(gè)超神奇的公式! wps表格中對(duì)混合內(nèi)容中的分?jǐn)?shù)求和的技巧
wps表格中有很多內(nèi)容,想要單獨(dú)對(duì)分?jǐn)?shù)數(shù)據(jù)進(jìn)行求和,方法很多,今天我們用“=”+regexp+evaluate+sum這個(gè)公式對(duì)混合內(nèi)容的分?jǐn)?shù)求和,詳細(xì)如下2025-07-22
根據(jù)簡稱查詢?nèi)Q太香了! wps中regexp+vlookup公式使用技巧
wps表格中數(shù)據(jù)需要做一個(gè)對(duì)稱,想要實(shí)現(xiàn)將數(shù)據(jù)中的簡稱和全稱對(duì)應(yīng)起來,該怎么操作呢?下面我們就來看看詳細(xì)教程2025-07-22
wps怎么帶括號(hào)求和? regexp+sum這個(gè)厲害的求和公式請(qǐng)收藏
最近一直在研究REGEXP函數(shù),發(fā)現(xiàn)比想象中的更強(qiáng)大,過去一大堆案例都可以通過這個(gè)數(shù)解決,比如今天這個(gè)案例,需求很簡單,需要將括號(hào)內(nèi)的數(shù)字進(jìn)行求和運(yùn)算,我們?cè)撊绾螌?shí)現(xiàn)2025-07-22
從此以后寫公式又有一種新路子! wps中用Let函數(shù)玩變量的技巧
wps中Let函數(shù)給計(jì)算結(jié)果分配名稱,就像編程里的變量一樣,它讓你的公式更清晰,減少冗余,下面我們就來看看用Let函數(shù)玩變量的技巧2025-07-22
每一個(gè)使用頻率都極高! 7個(gè)WPS新函數(shù)公式全指南
在實(shí)現(xiàn)精通 Office 的路上,表格函數(shù)一直都是繞不過的一道坎,今天就給大家整理了常用的 7 個(gè)新函數(shù)教程,希望能幫助到大家2025-05-09
怎么提取生日? wps批量提取身份證號(hào)碼中的出生日期的公式
在公司系統(tǒng)中提取出生日期后可自動(dòng)進(jìn)行年齡計(jì)算、生日提醒等操作,減少人工處理的工作量,提高業(yè)務(wù)處理效率,通過提取身份證中的出生日期與本人實(shí)際情況核對(duì),也能有效驗(yàn)證2025-03-10
掌握wps Excel新公式! 告別傳統(tǒng)查找替換 SUBSTITUTE函數(shù)使用技巧
許多人習(xí)慣于使用Ctrl+H進(jìn)行傳統(tǒng)查找和替換操作,比如將內(nèi)容中的空格、‘MM’、‘X’等字符逐個(gè)替換,其實(shí)有新公式可以快速解決,下面我們就來看看詳細(xì)的教程2025-02-19




