从整个列excel-VBA中删除重复的子字符串

时间:2016-01-14 23:22:58

标签: excel-vba replace trim vba excel

我有一个名为“Name”的列,其条目有

在我需要的行条目的前面。所以例如

“名称: {white space} ABC零售商”代替“ABC零售商”

“ame: {white space} XYZ供应商”代替“XYZ供应商”

我只想从这些行条目中删除“Name:”和“ame:”,然后还要删除左侧的空白。

我到底该怎么做?

我尝试使用Replace,从这样开始:

Sub fix_names()
    'declare variables
    Dim arr() As Variant
    arr = Range("B2:B3781")

    'count rows
    noRows = Range("B2:b3781").Rows.Count

    'begin clean up operation
    For i = 1 To noRows
        arr(i) = (Replace(arr(i), "Name:", ""))
    Next i

End Sub

但无济于事。我究竟做错了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据我的评论,一个简单的公式将会这样做:

=TRIM(MID(B2,SEARCH(":",B2) +1, LEN(B2)))

如果你想在vba中使用它,那么:

Sub fix_names()
'declare variables
Dim i as long
Dim arr() As Variant
arr = Range("B2:B3781")

'begin clean up operation
For i = LBound(arr, 1) To UBound(arr, 1)
    arr(i, 1) = Trim(Mid(arr(i, 1), WorksheetFunction.IfError(Application.Find(":", arr(i, 1)), 1) + 1))
Next i
Range("B2:B3781").Value = arr
End Sub

问题在于,即使您只使用一列加载数组,它仍然是一个二维数组,必须这样处理。