我正在处理一个巨大的Excel表格,我需要从某个单元格(A1)中提取字符串模式的所有匹配项。"TCS“+模式匹配后的4个字符,例如,用逗号分隔到另一个单元格(B1)的TCS1234。
示例:
单元格A1包含以下字符串:
HRS164, SRS3439(s), SRS3440(s), SRS3441(s), SRS3442(s), SRS3443(s), SRS3444(s), SRS3445(s), SRS3449(s), SRS3450(s), SRS3451(s), SRS3452(s), SYSBASE.SSS300(s), TCS3715(s), TCS3716(s), TCS3717(s), TCS4037(s), TCS1234在B1中,所有TCS-Numbers必须用逗号分隔:
TCS3715, TCS3716, TCS3717, TCS4037, TCS1234没有必要同时提取下面的"(s)“。
有没有人能帮我(excel菜鸟)完成这个挑战?
TIA Erika
发布于 2014-02-05 23:15:13
下面是我将使用的东西:也是一个用户定义的函数:
Function GetTCS(TheString)
For Each TItem In Split(TheString, ", ")
If Left(TItem, 3) = "TCS" Then GetTCS = GetTCS & TItem & " "
Next
GetTCS = Replace(Trim(GetTCS), " ", ", ")
End Function这将从字符串中返回"TCS3715(s),TCS3716(s),TCS3717(s),TCS4037(s),TCS1234“。如果你不知道如何创建一个用户定义的函数,请直接问,它非常简单,我很乐意向你展示。希望这能有所帮助。
发布于 2014-02-05 23:00:52
尝试以下用户定义的函数:
Public Function Xtract(r As Range) As String
Dim s As String, L As Long, U As Long
Dim msg As String, i As Long
s = Replace(r(1).Text, " ", "")
ary = Split(s, ",")
L = LBound(ary)
U = UBound(ary)
Xtract = ""
msg = ""
For i = L To U
If Left(ary(i), 3) = "TCS" Then
If msg = "" Then
msg = Left(ary(i), 7)
Else
msg = msg & "," & Left(ary(i), 7)
End If
End If
Next i
Xtract = msg
End Function发布于 2014-02-05 23:52:55
如果TCS-part始终位于字符串的末尾,如您的示例所示,我将使用(在B1中):
=REPLACE(A1,1,FIND("TCS",A1)-1,"")
https://stackoverflow.com/questions/21580273
复制相似问题