當前位置:首頁 > 綜合 > 正文

這也太牛了吧,白學了15年Excel,正則簡直無敵的存在,刷新認知

與 30萬 粉絲一起學Excel


昨天文章《複制粘貼太慢,公式太難,這才是最強的數據處理神技》,粉絲的留言,原來的VBA自定義函數,遇到小數會存在問題。


為此,盧子花了一天的時間, 研究了正則 發現了一片新天地 以前那些 難于上青天的問題,瞬間就變得 很簡單。

1. 含有小數、負數求和出錯的優化

\d+隻是正則裡面一個用法,匹配數字,相當于[0-9]

小數、負數同時存在,要用-?\d+\.?\d+-就是負号\.代表小數點。

=正則提取(A2,"(-?\d+\.?\d+)","+",2)

還有一大堆表示法,一次性很難記住,先知道一些常用的就好。

1)匹配郵編,郵編是6位數字。正則表達式:\d{6}

2)匹配手機,手機号是11位數字。正則表達式:\d{11}

3)匹配電話,電話是區号-号碼組成,區号有3到4位,号碼有6到9位。正則表達式:\d{3,4}-\d{6,9}

4)匹配日期,日期格式如2022-9-17,明顯數字加橫線組成。正則表達式:\d{4}-\d{1,2}-\d{1,2}

2.普通公式寫到吐血的時間分離

這是昨晚某粉絲的問題,盧子用普通公式寫了一半就放棄了,實在太難。輸入很亂,沒啥規律,需要一大堆判斷。

于是用了正則,瞬間所有問題都不是問題了,輕松拿下。

開始時間:時間都是以:作為分隔符号,存在中文和英文狀态下的:,因此用[::]表示2種符号。時或者分都是1-2位,因此用\d{1,2}。最後用ASC将中文的符号全部轉換成英文的。

=ASC(正則提取(A2,"(\d{1,2}[::]\d{1,2})","+",0,1))

結束時間:

=ASC(正則提取(A2,"(\d{1,2}[::]\d{1,2})","+",0,2))

用時:都是min之前1-2位,也就是\d{1,2}min。

=正則提取(A2,"(\d{1,2}min)","+",0,1)

3.最後,再來個簡單的案例,從字符串裡面分離出日期、步數、排名,鞏固下用法


日期:
=正則提取(A2,"(\d+)","+",0,1)


步數:
=正則提取(A2,"(\d+)","+",0,2)

排名:

=正則提取(A2,"(\d+)","+",0,3)

如果日期改變成2022-9-17這種格式,也可以順利提取。

=正則提取(A2,"(\d{4}-\d{1,2}-\d{1,2})","+",0,1)

從上面的案例可以看出,不管多亂,都能提取任意數字,全部數字,甚至求和,接近全能的代碼。


活到老,學到老,即便盧子有15年的Excel經驗,還有一些知識沒掌握好。你也要堅持學習。

你可能想看:

有話要說...

取消
掃碼支持 支付碼