簡體   English   中英

在Excel中拆分混合字符串

[英]Split mixed string in excel

我有一個棘手的問題。 工作中的這一長列很長,其中包含以下格式的混合字符串:

ue6584
th45
hur4562243

因此這是非常不規則的,唯一的規律是它以字母開頭,以數字結尾。 我需要在每個單元格中拆分字符串,以便:

ue6584             —> ue 6584
th45                 —> th 45
hur4562243     —> hur 4562243

因此,該單元格分為兩列,一列僅包含字母,另一列僅包含數字。 到目前為止,我認為這不可能在excel中完成。

有人可以幫忙嗎?

預先感謝您,Dritan

或者,您可以使用帶有內置函數的簡單技巧:

  • =LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))-1) -用於字符串部分;
  • =RIGHT(A1,LEN(A1)-MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1) -用於數字部分;

在此處輸入圖片說明

您可能需要VBA,所以我創建了UDF(加上它為我提供了使用RegEx的借口)。

首先,將RegEx引用添加到VBEditor。 有關操作,請參閱此帖子中的步驟1

然后將它們添加到您的工作簿中的模塊:

Function return_letters(ByVal target As Range)
Dim regEx As New RegExp

Dim pattern As String: pattern = "[0-9]"
With regEx
    .Global = True
    .MultiLine = False
    .IgnoreCase = False
    .pattern = pattern
End With

If regEx.Test(target) Then
    return_letters = (regEx.Replace(target, ""))
End If

End Function

Function return_numbers(ByVal target As Range)
Dim regEx As New RegExp
Dim pattern As String: pattern = "[a-zA-Z]"
With regEx
    .Global = True
    .MultiLine = False
    .IgnoreCase = False
    .pattern = pattern
End With

If regEx.Test(target) Then
    return_numbers = (regEx.Replace(target, ""))
End If

End Function

最后,只需調用每個函數:

在此處輸入圖片說明

暫無
暫無

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

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