0

我有一列包含以下样本的单元格

a1 = D11F2/J3C2/FENCE*25A/23A/21A/20A
a2 = d11f2/00A/123/d6f2

我想删除任何 3 位代码“/00A”,它们通常由 / 分隔,但与 A1 中的情况一样,它由星号“*25a”分隔

该公式/宏将导致:

a1 = D11F2/J3C2/FENCE
a2 = d11f2/d6f2

感谢所有的帮助!

我尝试使用替代公式,但它只在分隔符后删除了第一个或第二个字符串

4

2 回答 2

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

正如问题中规定的那样。

于 2013-04-05T20:36:37.633 回答
0

在这里,我提供了另一种没有编码或公式的解决方案。每个人都将很容易做到这一点。

  1. 选择数据区域。例如。A1:A20
  2. 按“<strong>Ctrl+H”调用替换功能。
  3. 要填充的查找区域:~查找星号,替换为区域:/ 然后您可以将所有星号()替换为斜杠(/)

    查找:~*

    代替:/

    对于垫片替换,使用相同的方式,空格只需输入“”。没有”,不需要~。

    查找:(<--有一个间隔)

    代替:/

  4. 再次Ctrl+H。

    抬头: /???/

    代替:/

现在您替换了除 /xxx 5 后缀之外的所有 /3 数字。使用过滤器选择后缀为 /xxx 的代码

筛选: */???

分别处理。也许还需要一个公式:= left(A1,len(A1)-4)

于 2018-04-12T05:18:08.407 回答