我有一列包含以下
样本的单元格a1 = D11F2/J3C2/FENCE*25A/23A/21A/20A
a2 = d11f2/00A/123/d6f2
我想删除任何3位数代码“/ 00A”,它们通常用/分隔,但在A1的情况下它被星号“* 25a”分开
此公式/宏将导致:
a1 = D11F2/J3C2/FENCE
a2 = d11f2/d6f2
感谢所有的帮助!
我尝试使用替代公式,但它只删除了分隔符后的第一个或第二个字符串
答案 0 :(得分:0)
以下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
按照问题的规定。
答案 1 :(得分:0)
这里我提供了另一种没有编码或公式的解决方案。每个人都很容易做到这一点。
查找要填充的区域:〜 查找星标,替换为区域:/ 然后,您可以将所有星号()替换为斜杠(/)
查找:〜*
取代:/
对于垫片更换,使用相同的方式,空间只是tpye" &#34 ;.没有",没有必要〜。
查找:(< - 有间隔符)
取代:/
再次按Ctrl + H.
查询:/ ??? /
替换:/
现在你替换了除/ xxx后缀之外的所有/ 3位数字 5.使用过滤器选择后缀为/ xxx
的代码过滤器:* / ???
单独处理。也许还需要一个公式: =左(A1,len(A1)-4)