2016-01-14 53 views
0

删除重复子我有一个名为“姓名”一栏,其条目要么从整列Excel的VBA

的行条目,我需要的部分之前。因此,例如 “姓名:{空白} ABC零售商”

,而不是 “ABC零售商”

“AME:{空白} XYZ供应商”,而不是“XYZ供应商“

我只想摆脱这些行条目中的”名称:“和”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 

,但无济于事。我究竟做错了什么?我怎样才能解决这个问题?

+0

一个公式会做它'= TRIM(MID(B2,SEARCH(“:”,B2)+1,LEN(B2)))' –

回答

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 

的问题是,即使您加载只有一列的数组仍然是二维数组,并且必须按照这种方式处理。

+0

谢谢,公式工作,并且少得多麻烦!我尝试使用您的VBA代码,但它给了我一个错误: 错误的参数数量或无效的属性分配(错误450)。 尽管我并不真正需要它,但我只是为了练习我的VBA技巧而解决这个问题。如果/当我得到答案时,我会尝试更多并在此发布更新。 谢谢! – elbarto

+0

@elbarto什么行是抛出错误? –

+0

crikey,我删除了代码/文件,但从内存中它是forloop。 – elbarto