簡體   English   中英

從文本字符串中提取數字的公式

[英]Formula to extract numbers from a text string

如何從Excel或Google表格中的文本字符串中僅提取數字? 例如:

A1 - a1b23eg67
A2 - 15dgrgr156

所需的結果是

B1 - 12367
B2 - 15156

您可以使用Google表格中的捕獲組來完成此操作

=REGEXREPLACE(A1,ʺ(\d)|.ʺ,ʺ$1ʺ)

任何與方括號內容(數字)匹配的內容都將被復制到輸出中,其他任何內容都將替換為空字符串。

請參閱@Max Makhrov對這個問題的回答

要么

=regexreplace(A1,ʺ[^\d]ʺ,ʺʺ)

刪除所有不是數字的東西。

因為您還要求提供Excel,

如果您已訂閱Office 365 Excel,則可以使用以下數組公式:

=--TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))

作為數組公式,退出編輯模式時,需要使用Ctrl-Shift-Enter而不是Enter進行確認。 如果操作正確,則Excel會將{}放在公式周圍。

在此處輸入圖片說明

我想像有一種方法可以使用=RegexExtract來實現這一點,但是我不知道如何在第一次命中后使它重復搜索。 通常,使用這些正則表達式函數實現時,需要重復第三個參數,但它看起來並不像Google實現的那樣。

無論如何,以下公式可以解決問題。 只是一個回旋處:

=concatenate(SPLIT( LOWER(A1) , "abcdefghijklmnopqrstuvwxyz" ))

這是將字符串轉換為小寫,然后使用字母表中的任何字母拆分字符串。 這將返回剩余的數字數組,我們將它們連接在一起。


更新,切換到=REGEXREPLACE()而不是提取...:

=regexreplace(A1, "[a-z]", "")

與concat(split())廢話相比,這是一種更干凈,更明顯的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM