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

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