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