从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

正如问题中所规定的。

这里我提供了另一个没有编码或公式的解决方案。这对每个人来说都很容易做到

  • 选择数据区域。A1:A20
  • 按“Ctrl+H”调用替换函数
  • 查找要填充的区域:~查找星号,替换为区域:/ 然后可以将全星形()替换为斜杠(/)

    查找:~*

    替换:/

    对于垫片更换,使用相同的方法,空格仅为tpye“。无”,无需~


    查阅:(请告诉我们您的尝试和您的奋斗方向,以便我们能够帮助您。您称之为“三位数代码”但是在你的例子中有一个字母。什么是有效的分隔符?仅仅是
    '/'
    '*'
    '
    ?你显然是把
    D11
    等单独留下了…在“*25a”的情况下,删除分隔符的规则是什么?你是把前面的分隔符单独留下,还是后面的分隔符?唯一有效的分隔符rs是“/”一个星或空间应该被删除。为了更深入地了解这些是停车位。旧的停车场是3位代码,新的是4位代码。