删除最后两个字符

时间:2014-10-02 09:35:00

标签: excel excel-vba vba

我已经编写了一些代码来完成循环,如果在单元格中找到“gb”,我想删除该单元格中的最后两个字符。

这是循环

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

我坚持的位是删除最后两个字符的代码。我知道它应该在if if语句中,但我在网上找到的所有答案似乎都不起作用。

感谢任何帮助!感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用简单的Mid()功能

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

Left()

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

答案 1 :(得分:0)

正如vba4all所建议的,但是检查很小。使用Mid或substring检查长度时,这总是一个很好的做法:)

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

答案 2 :(得分: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