效率翻倍! wps中regexp+asc+evaluate公式快速結(jié)算雜亂內(nèi)容數(shù)據(jù)的技巧
網(wǎng)友求助SOS:如何將含雜亂內(nèi)容的計(jì)算過程記錄,快速計(jì)算出結(jié)果?由于這位網(wǎng)友的要求比較特殊,我們簡化數(shù)據(jù)源,用案例進(jìn)行講解。
如下圖所示:
A2單元格是計(jì)算過程的記錄:8.7(長)*3.6(寬)-6.1(長)*2(寬)+2,不僅含有原始的文本核心算式:8.7*3.6-6.1*2+2,并且在數(shù)字后面還標(biāo)注了帶括號的長或?qū)挼男畔?。并且括號格式還不一致,有些是中文全角的,有些是英文半角的,這些特殊處理細(xì)節(jié)都對B2單元格的計(jì)算結(jié)果增加了難度。
A2單元格的理論計(jì)算過程與結(jié)果是,我們想要得到的就是B2的結(jié)果:
=8.7*3.6-6.1*2+2
=21.12

下面拆解公式,分步驟講解作用原理。
第一步:統(tǒng)一括號格式
我們輸入公式:
=ASC(A2)
全角的1個(gè)左/右括號占2個(gè)字符的長度,半角的1個(gè)左/右括號占1個(gè)字符的長度,這個(gè)特點(diǎn)我們用肉眼可以觀察到。
ASC函數(shù)可以將全角字符轉(zhuǎn)換為半角字符。所以全角的左/右括號就轉(zhuǎn)換為了半角的左/右括號。
統(tǒng)一格式后的效果:
"8.7(長)*3.6(寬)-6.1(長)*2(寬)+2"

第二步:刪除括號及括號的內(nèi)容
我們外面嵌套REGEXP正則表達(dá)式函數(shù):
=REGEXP(ASC(A2),"\(.*\)")
- \:表示轉(zhuǎn)義符。
- \(:將左括號轉(zhuǎn)換為真正的標(biāo)點(diǎn)符號左括號
- \):將右括號轉(zhuǎn)換為真正的標(biāo)點(diǎn)符號右括號
- .*:表示0個(gè)或多個(gè)連續(xù)的字符。
- \(.*\):表示括號及括號里的任意內(nèi)容。
理論上運(yùn)用上述正則表達(dá)式,REGEXP函數(shù)用默認(rèn)的“提取”模式,可以提取到A2單元格中所有的括號及括號里的任意內(nèi)容。
但是卻出現(xiàn)了下面錯(cuò)誤的結(jié)果:
(長)*3.6(寬)-6.1(長)*2(寬)

原因REGEXP正則表達(dá)式函數(shù)默認(rèn)的是“貪婪模式”,它會盡可能多的匹配內(nèi)容,它會將:“8.7(長)*3.6(寬)-6.1(長)*2(寬)+2”原始數(shù)據(jù)中,第一個(gè)左括號與最后一個(gè)右括號中間的內(nèi)容全部提取出來:“(長)*3.6(寬)-6.1(長)*2(寬)”
所以我們需要完善正則表達(dá)式:
=REGEXP(ASC(A2),"\(.*?\)")
在*后面加上一個(gè)?號,?是“貪婪模式”向“懶惰模式”轉(zhuǎn)換的開關(guān),這樣轉(zhuǎn)換為懶惰模式后,它會盡可能少的匹配括號里面的內(nèi)容,只會分別匹配單獨(dú)的每個(gè)括號及括號里面的內(nèi)容。
最后提取結(jié)果以數(shù)組溢出的方式顯示在一行多個(gè)單元格中:
{"(長)","(寬)","(長)","(寬)"}

繼續(xù)完善正則公式:
=REGEXP(ASC(A2),"\(.*?\)",2,)
=REGEXP(ASC(A2),"\(.*?\)",2,"")
將第三參數(shù)由默認(rèn)的省略或0修改為2,表示“替換”模式,第4參數(shù)表示替換為什么,我們跳過或設(shè)置為"",表示替換為空值。
即將查找出來的4組括號及括號里面的內(nèi)容,替換為空,等價(jià)于刪除4組括號及括號里面的內(nèi)容。

第三步:計(jì)算文本算式
最外面嵌套EVALUATE函數(shù):
=EVALUATE(REGEXP(ASC(A2),"\(.*?\)",2,))
EVALUATE函數(shù)是常用的宏表函數(shù)之一,用于對以文字表示的一個(gè)公式或表達(dá)式求值,并返回結(jié)果。

該函數(shù)不能在微軟Office Excel單元格中直接使用,需要使用自定義名稱的方法間接調(diào)用。
使用WPS表格的朋友可以不用定義名稱,直接在工作表中輸入公式即可。
相關(guān)文章

實(shí)現(xiàn)動(dòng)態(tài)裝箱計(jì)算! wps中ddb+text函數(shù)公式的使用技巧
wps中有很多函數(shù)組合到一起會達(dá)到神奇的效果,比如我們今天用到的ddb+text函數(shù),可以輕松實(shí)現(xiàn)現(xiàn)動(dòng)態(tài)裝箱計(jì)算,詳細(xì)如下2025-07-30
wps如何開根號? WPS利用AI編寫代碼統(tǒng)一為數(shù)值計(jì)算平方根的技巧
wps表格中的數(shù)據(jù)需要進(jìn)行開根號計(jì)算,雖然我們用SQRT函數(shù)可以實(shí)現(xiàn),現(xiàn)在利用ai計(jì)算更方便,下面我們就來看看詳細(xì)教程2025-07-02
怎么實(shí)現(xiàn)會員續(xù)費(fèi)到期提醒? wps會員續(xù)費(fèi)到期日期計(jì)算實(shí)戰(zhàn)案例
在進(jìn)行會員管理的時(shí)候,想要將即將到期的會員設(shè)置一個(gè)續(xù)費(fèi)提醒,該怎么設(shè)置呢?下面我們就來看看實(shí)例教程2025-04-01
wps如何計(jì)算某日期是一年中的第幾周? 推算某一年第幾周的時(shí)間范圍
如何計(jì)算某一天或某一周是當(dāng)年的第幾周?是否每次都得靠數(shù)數(shù)?那肯定不能讓我的讀者這樣操作,說出去也丟人不是?今天教大家一種方法,快速計(jì)算出日期處于一年中的第幾周2025-02-11
wps excel怎么計(jì)算不足2小時(shí)時(shí)間每滿30分鐘計(jì)算一次不足2小時(shí)的全部歸
今天就和大家分享如何按照這樣的規(guī)定計(jì)算加班時(shí)長,不足2小時(shí)的全部歸零,足2小時(shí)的每滿30分鐘計(jì)算一次,怎么算?多學(xué)一招,提升自己的能力2025-01-31
不足1小時(shí)的部分忽略該怎么計(jì)算? wps excel計(jì)算算加班時(shí)長時(shí)的技巧
加班小時(shí)不足一小時(shí)應(yīng)該如何算工資呢?統(tǒng)計(jì)工作時(shí)間計(jì)算工資,發(fā)現(xiàn)有加班不滿足一小時(shí)的情況,想要將不足一小時(shí)的時(shí)間忽略,該怎么操作呢?詳細(xì)請看下文2025-01-31
wps excel計(jì)算時(shí)間間隔分鐘數(shù)不足1分鐘的要按1分鐘計(jì)算該怎么實(shí)現(xiàn)?
不足一分鐘怎么計(jì)費(fèi)的?想要實(shí)現(xiàn)一個(gè)問題,就是在打電話不到1分鐘按1分鐘算,該怎么用excel公式實(shí)現(xiàn)呢?詳細(xì)請看下文介紹2025-01-31
wps excel倆時(shí)間相減得負(fù)數(shù)怎么處理? 跨天計(jì)算時(shí)間間隔相減得到負(fù)數(shù)解
wps中兩個(gè)時(shí)間相減得出來的竟然是負(fù)數(shù),是計(jì)算錯(cuò)誤,還是輸入錯(cuò)誤,該怎么解決呢?下面我們就來看看詳細(xì)解決辦法2025-01-30
wps怎么打豎式? wps輸入除法豎式計(jì)算步驟的技巧
wps文檔中好多需要輸入除法豎式計(jì)算,還要有計(jì)算步驟,該怎么輸入豎式呢?下面我們就來看看wps輸入豎式的技巧2025-01-23
WPS如何設(shè)置保存工作簿前重新計(jì)算 WPS設(shè)置保存工作簿前重新計(jì)算的方法
WPS如何設(shè)置保存工作簿前重新計(jì)算?我們只需要點(diǎn)擊打開WPS表格文檔中的文件選項(xiàng),再打開“選項(xiàng)”,接著在重新計(jì)算頁面中先點(diǎn)擊選擇“手動(dòng)重算”選項(xiàng),再點(diǎn)擊勾選“保存工作2024-09-26






