从excel中删除由*和*分隔的文本字符串/
我有一列单元格,其中包含以下示例从excel中删除由*和*分隔的文本字符串/,excel,excel-formula,excel-2010,vba,Excel,Excel Formula,Excel 2010,Vba,我有一列单元格,其中包含以下示例 a1 = D11F2/J3C2/FENCE*25A/23A/21A/20A a2 = d11f2/00A/123/d6f2 我想删除任何3位代码“/00A”,它们通常由a/分隔,但与A1中的情况一样,它们由星号“*25a”分隔 此公式/宏将导致: a1 = D11F2/J3C2/FENCE a2 = d11f2/d6f2 谢谢你的帮助 我尝试使用替换公式,但它只删除了除法器后的第一个或第二个字符串以下VBA函数似乎满足了我的要求: Function stri
a1 = D11F2/J3C2/FENCE*25A/23A/21A/20A
a2 = d11f2/00A/123/d6f2
我想删除任何3位代码“/00A”,它们通常由a/分隔,但与A1中的情况一样,它们由星号“*25a”分隔
此公式/宏将导致:
a1 = D11F2/J3C2/FENCE
a2 = d11f2/d6f2
谢谢你的帮助
我尝试使用替换公式,但它只删除了除法器后的第一个或第二个字符串以下VBA函数似乎满足了我的要求:
Function stripThree(s As String)
' find any sequence of three "digits"
' that are separated by either ' ', '*', or '/'
' and remove them, including their leading separator
Dim ii, l, lastGood, lastSep As Integer
Dim retval As String
lastGood = 0
lastSep = 0
For ii = 1 To Len(s)
l = Mid(s, ii, 1)
retval = retval & l
If l = "/" Or l = "*" Or l = " " Then
If ii - lastSep = 4 Then
retval = Left(retval, Len(retval) - 5) & l
End If
lastSep = ii
End If
Next ii
' if last "separator" is the end of the string
' we still need to remove the three digit/letter code
If lastSep + 4 = ii Then
retval = Left(retval, Len(retval) - 4)
End If
stripThree = retval
End Function
此代码的工作示例:
input: D11F2/J3C2/FENCE*25A/23A/21A/20A
output: D11F2/J3C2/FENCE
input: d11f2/00A/123/d6f2
output: d11f2/d6f2
正如问题中所规定的。这里我提供了另一个没有编码或公式的解决方案。这对每个人来说都很容易做到
查阅:(请告诉我们您的尝试和您的奋斗方向,以便我们能够帮助您。您称之为“三位数代码”但是在你的例子中有一个字母。什么是有效的分隔符?仅仅是
'/'
和'*'
?'
?你显然是把D11
等单独留下了…在“*25a”的情况下,删除分隔符的规则是什么?你是把前面的分隔符单独留下,还是后面的分隔符?唯一有效的分隔符rs是“/”一个星或空间应该被删除。为了更深入地了解这些是停车位。旧的停车场是3位代码,新的是4位代码。