【问题标题】:How do i truncated part of a word with a wildcard using VBA我如何使用 VBA 用通配符截断部分单词
【发布时间】:2017-08-04 23:26:56
【问题描述】:

我在 AJ 列中有很多文本字符串(用 ;# 分隔的类别),例如 Cell AJ2 在每一行中都有(会计:和一些文本;#Business:和一些文本)。我想删除以“Business:”或“:#Business:

【问题讨论】:

标签: vba excel wildcard


【解决方案1】:

试试这个代码。

Sub test()
    Dim vDB, vSplit, s As String
    Dim n As Long, i As Long
    vDB = Range("aj2", Range("aj" & Rows.Count).End(xlUp))
    n = UBound(vDB, 1)
    For i = 1 To n
        s = vDB(i, 1)
        If InStr(s, "Business") Then
            vSplit = Split(s, "Business")
            s = Replace(s, "Business" & vSplit(UBound(vSplit)), "")
            If Right(s, 1) = "#" Then
                s = Left(s, Len(s) - 2)
            End If
            vDB(i, 1) = s
        End If
    Next i
    Range("ak2").Resize(n) = vDB
End Sub

【讨论】:

  • 如果我想删除业务之前的所有内容。
  • Dim vDB, vSplit, s As String Dim n As Long, i As Long vDB = Range("aj2", Range("aj" & Rows.Count).End(xlUp)) n = UBound(vDB, 1) For i = 1 To n s = vDB(i, 1) If InStr(s, "Business") Then vSplit = Split(s, "Business") vDB(i, 1) = "Business" & vSplit(UBound(vSplit)) Else vDB(i, 1) = Empty End If Next i Range("ak2").Resize(n) = vDB
  • 我添加了更多示例数据以在业务之前删除所有内容。我用示例图片更新了帖子。我突出显示了一行.. 有两个业务,所以当我运行代码时,在评论中删除业务之前的所有内容,它工作得很好,但它只为突出显示的行显示一个业务。
  • Sub test3() Dim vDB, vSplit, s As String Dim n As Long, i As Long, k As Integer vDB = Range("aj2", Range("aj" & Rows.Count) .End(xlUp)) n = UBound(vDB, 1) For i = 1 To n s = vDB(i, 1) If InStr(s, "Business") Then k = InStr(s, "Business") - 1 vDB (i, 1) = Right(s, Len(s) - k) Else vDB(i, 1) = Empty End If Next i Range("ak2").Resize(n) = vDB End Sub
猜你喜欢
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2019-04-14
相关资源
最近更新 更多