
我想從每行中刪除數字,包括冒號。
範例資料:
22:18:01(165):access-list OUTSIDE_IN extended permit deny IP
我嘗試使用公式
=RIGHT(A2,LEN(A2)-FIND(" ",A2))
但沒有成功。它刪除了所有內容,22:18:01(165):access-list
因為最後一個冒號後面沒有空格。
答案1
假設您的所有行看起來都像範例行(具體來說,您要保留的文字部分中沒有冒號),您可以為此使用“文字到列”,指定:
為分隔符號。
選擇包含資料的列,然後按一下Text to Columns
選項Data
卡。
在第一個畫面上選擇Delimited
,在第二個畫面上僅勾選Other
並輸入冒號:
點擊完成,您的資料現在應該根據每個冒號分為 4 列。只需刪除前 3 列,剩下的就是access-list OUTSIDE_IN extended permit deny IP
或者,假設每行之前的字元數access-list
相同,您可以使用=RIGHT(A2,LEN(A2)-14)
答案2
滿足任意長度數字的最簡單的公式解決方案適用於資料開頭以冒號分隔的數字固定計數的情況,例如三個數字:
輸入以下公式B2
,然後按 ctrl-enter/copy-paste/fill-down/auto-fill 到表格列的其餘部分:
=RIGHT(A2,LEN(A2)-FIND(CHAR(1),SUBSTITUTE(A2,":",CHAR(1),3)))
解釋:
可選的第四個參數允許我們用文字中其他地方沒有出現的特殊字元來SUBSTITUTE()
取代特定出現的字元(在本例中是第三個字元)。使用它是因為它幾乎可以保證:
CHAR(1)
絕不出現在任何字串中。
這會產生第二個單獨的分隔符,我們希望保留的資料位於右側。您的RIGHT()
公式現在可以正常工作了。
請注意,即使您希望保留的文字中有冒號,此解決方案也將起作用。
一個更通用的公式解決方案,允許多變的:
資料開頭的分隔符號數字(以及任意長度的數字)的計數為:
=RIGHT(A2,LEN(A2)-FIND(CHAR(1),SUBSTITUTE(A2,":",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2,":","")))))
解釋:
第二個SUBSTITUTE()
刪除所有冒號。原始文字的長度與刪除冒號的文字長度之間的差值是冒號的數量。
對於樣本資料:
LEN(A2)-LEN(SUBSTITUTE(A2,":",""))
→3
。- 因此
=RIGHT(A2,LEN(A2)-FIND(CHAR(1),SUBSTITUTE(A2,":",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2,":","")))))
→=RIGHT(A2,LEN(A2)-FIND(CHAR(1),SUBSTITUTE(A2,":",CHAR(1),3)))
即與第一個公式相同(除了第一個公式中 是3
第三個冒號,而在這個公式中它是最後的冒號)
顯然,這個公式將不是如果您希望保留的文字中有冒號,則可以正常工作。