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

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

  發(fā)布時間:2025-07-30 09:52:12   作者:佚名   我要評論
wps表格中記錄的內(nèi)容,有單位有數(shù)據(jù),想要根據(jù)記錄快速計算出需要計算的結(jié)果,我們可以利用regexp+asc+evaluate函數(shù)快速提取數(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表格的朋友可以不用定義名稱,直接在工作表中輸入公式即可。

推薦閱讀:二維轉(zhuǎn)一維表又一新思路! wps中3個tocol+2個if直接搞定

相關(guān)文章

最新評論