2014-10-02 110 views
1

我已经写了一些代码来通过一个循环,如果它发现“单元格”在单元格中我想删除该单元格中的最后两个字符。删除最后两个字符

这里是环

Sub RemoveUnits() 
    Dim r As Range 
    Dim x As Long 
    For Each r In ActiveSheet.UsedRange 
     w = r.Value 
     If InStr(w, "gb") > 0 Then 
      [INSERT CODE HERE] 
     End If 
    Next r 
End Sub 

我坚持上的一点是,删除最后两个字符的代码。我知道它应该在这个如果陈述中,但我在网上找到的所有答案似乎并没有工作。

感谢任何帮助!谢谢。

回答

2

你可以使用一个简单的Mid()功能

r = Mid$(r, 1, len(r)-2) 

Left()

r = Left$(r, len(r)-2) 
0

至于建议的vba4all但小检查。它采用中等或子检查长度:)

r = IIf(Len(r) > 2, Mid(r, 1, Len(r) - 2), r) 
+1

如果它发现'gb'那么长度至少是2 .. – 2014-10-02 09:59:31

+0

你是深深的... – 2014-10-02 11:47:51

0

你会发现,使用AutoFilterFind或变体,将大大加快与范围内工作时,总是一个很好的做法。像下面的东西。

Sub RemoveUnits() 
    Dim X 
    Dim lngRow As Long 
    Dim lngCol As Long 
    X = ActiveSheet.UsedRange.Value2 
    For lngRow = 1 To UBound(X) 
     For lngCol = 1 To UBound(X, 2) 
      If InStr(X(lngRow, lngCol), "gb", vbBinaryCompare) <> 0 Then X(lngRow, lngCol) = Left$(X(lngRow, lngCol), Len(X(lngRow, lngCol)) - 2) 
     Next 
    Next 
    ActiveSheet.UsedRange.Value2 = X 
    End Sub 
相关问题