效率翻倍! wps中regexp+asc+evaluate公式快速結(jié)算雜亂內(nèi)容數(shù)據(jù)的技巧

網(wǎng)友求助SOS:如何將含雜亂內(nèi)容的計算過程記錄,快速計算出結(jié)果?由于這位網(wǎng)友的要求比較特殊,我們簡化數(shù)據(jù)源,用案例進行講解。
如下圖所示:
A2單元格是計算過程的記錄:8.7(長)*3.6(寬)-6.1(長)*2(寬)+2,不僅含有原始的文本核心算式:8.7*3.6-6.1*2+2,并且在數(shù)字后面還標注了帶括號的長或?qū)挼男畔?。并且括號格式還不一致,有些是中文全角的,有些是英文半角的,這些特殊處理細節(jié)都對B2單元格的計算結(jié)果增加了難度。
A2單元格的理論計算過程與結(jié)果是,我們想要得到的就是B2的結(jié)果:
=8.7*3.6-6.1*2+2
=21.12
下面拆解公式,分步驟講解作用原理。
第一步:統(tǒng)一括號格式
我們輸入公式:
=ASC(A2)
全角的1個左/右括號占2個字符的長度,半角的1個左/右括號占1個字符的長度,這個特點我們用肉眼可以觀察到。
ASC函數(shù)可以將全角字符轉(zhuǎn)換為半角字符。所以全角的左/右括號就轉(zhuǎn)換為了半角的左/右括號。
統(tǒng)一格式后的效果:
"8.7(長)*3.6(寬)-6.1(長)*2(寬)+2"
第二步:刪除括號及括號的內(nèi)容
我們外面嵌套REGEXP正則表達式函數(shù):
=REGEXP(ASC(A2),"\(.*\)")
- \:表示轉(zhuǎn)義符。
- \(:將左括號轉(zhuǎn)換為真正的標點符號左括號
- \):將右括號轉(zhuǎn)換為真正的標點符號右括號
- .*:表示0個或多個連續(xù)的字符。
- \(.*\):表示括號及括號里的任意內(nèi)容。
理論上運用上述正則表達式,REGEXP函數(shù)用默認的“提取”模式,可以提取到A2單元格中所有的括號及括號里的任意內(nèi)容。
但是卻出現(xiàn)了下面錯誤的結(jié)果:
(長)*3.6(寬)-6.1(長)*2(寬)
原因REGEXP正則表達式函數(shù)默認的是“貪婪模式”,它會盡可能多的匹配內(nèi)容,它會將:“8.7(長)*3.6(寬)-6.1(長)*2(寬)+2”原始數(shù)據(jù)中,第一個左括號與最后一個右括號中間的內(nèi)容全部提取出來:“(長)*3.6(寬)-6.1(長)*2(寬)”
所以我們需要完善正則表達式:
=REGEXP(ASC(A2),"\(.*?\)")
在*后面加上一個?號,?是“貪婪模式”向“懶惰模式”轉(zhuǎn)換的開關(guān),這樣轉(zhuǎn)換為懶惰模式后,它會盡可能少的匹配括號里面的內(nèi)容,只會分別匹配單獨的每個括號及括號里面的內(nèi)容。
最后提取結(jié)果以數(shù)組溢出的方式顯示在一行多個單元格中:
{"(長)","(寬)","(長)","(寬)"}
繼續(xù)完善正則公式:
=REGEXP(ASC(A2),"\(.*?\)",2,)
=REGEXP(ASC(A2),"\(.*?\)",2,"")
將第三參數(shù)由默認的省略或0修改為2,表示“替換”模式,第4參數(shù)表示替換為什么,我們跳過或設置為"",表示替換為空值。
即將查找出來的4組括號及括號里面的內(nèi)容,替換為空,等價于刪除4組括號及括號里面的內(nèi)容。
第三步:計算文本算式
最外面嵌套EVALUATE函數(shù):
=EVALUATE(REGEXP(ASC(A2),"\(.*?\)",2,))
EVALUATE函數(shù)是常用的宏表函數(shù)之一,用于對以文字表示的一個公式或表達式求值,并返回結(jié)果。
該函數(shù)不能在微軟Office Excel單元格中直接使用,需要使用自定義名稱的方法間接調(diào)用。
使用WPS表格的朋友可以不用定義名稱,直接在工作表中輸入公式即可。
相關(guān)文章
實現(xiàn)動態(tài)裝箱計算! wps中ddb+text函數(shù)公式的使用技巧
wps中有很多函數(shù)組合到一起會達到神奇的效果,比如我們今天用到的ddb+text函數(shù),可以輕松實現(xiàn)現(xiàn)動態(tài)裝箱計算,詳細如下2025-07-30wps如何開根號? WPS利用AI編寫代碼統(tǒng)一為數(shù)值計算平方根的技巧
wps表格中的數(shù)據(jù)需要進行開根號計算,雖然我們用SQRT函數(shù)可以實現(xiàn),現(xiàn)在利用ai計算更方便,下面我們就來看看詳細教程2025-07-02怎么實現(xiàn)會員續(xù)費到期提醒? wps會員續(xù)費到期日期計算實戰(zhàn)案例
在進行會員管理的時候,想要將即將到期的會員設置一個續(xù)費提醒,該怎么設置呢?下面我們就來看看實例教程2025-04-01wps如何計算某日期是一年中的第幾周? 推算某一年第幾周的時間范圍
如何計算某一天或某一周是當年的第幾周?是否每次都得靠數(shù)數(shù)?那肯定不能讓我的讀者這樣操作,說出去也丟人不是?今天教大家一種方法,快速計算出日期處于一年中的第幾周2025-02-11wps excel怎么計算不足2小時時間每滿30分鐘計算一次不足2小時的全部歸
今天就和大家分享如何按照這樣的規(guī)定計算加班時長,不足2小時的全部歸零,足2小時的每滿30分鐘計算一次,怎么算?多學一招,提升自己的能力2025-01-31不足1小時的部分忽略該怎么計算? wps excel計算算加班時長時的技巧
加班小時不足一小時應該如何算工資呢?統(tǒng)計工作時間計算工資,發(fā)現(xiàn)有加班不滿足一小時的情況,想要將不足一小時的時間忽略,該怎么操作呢?詳細請看下文2025-01-31wps excel計算時間間隔分鐘數(shù)不足1分鐘的要按1分鐘計算該怎么實現(xiàn)?
不足一分鐘怎么計費的?想要實現(xiàn)一個問題,就是在打電話不到1分鐘按1分鐘算,該怎么用excel公式實現(xiàn)呢?詳細請看下文介紹2025-01-31wps excel倆時間相減得負數(shù)怎么處理? 跨天計算時間間隔相減得到負數(shù)解
wps中兩個時間相減得出來的竟然是負數(shù),是計算錯誤,還是輸入錯誤,該怎么解決呢?下面我們就來看看詳細解決辦法2025-01-30- wps文檔中好多需要輸入除法豎式計算,還要有計算步驟,該怎么輸入豎式呢?下面我們就來看看wps輸入豎式的技巧2025-01-23
WPS如何設置保存工作簿前重新計算 WPS設置保存工作簿前重新計算的方法
WPS如何設置保存工作簿前重新計算?我們只需要點擊打開WPS表格文檔中的文件選項,再打開“選項”,接著在重新計算頁面中先點擊選擇“手動重算”選項,再點擊勾選“保存工作2024-09-26