替换vba中的单词

时间:2017-05-18 10:43:12

标签: excel vba excel-vba

如何替换vba中的单词?例如,我有一列单词但有些以U和E结尾,我想删除U和E,我该怎么做?

Cells.Replace What:="/*-", Replacement:="", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

我用它来改变例如" AAA /& - "到" AAA"。我如何为" AAA U"做同样的事情。我不能使用相同的公式,因为" U"是一个普通的信?我的单词列由大约20多个以U结尾的不同单词组成,所以我也不能对单词进行硬编码。

请帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

只需循环遍历单元格,检查每个单元格的最后一个字符:

Sub Remove_E_and_U()
    Dim r As Range

    For Each r In ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeConstants)
        v = r.Value
        If v <> "" Then
            If Right(v, 1) = "U" Or Right(v, 1) = "E" Then
                r.Value = Mid(v, 1, Len(v) - 1)
            End If
        End If
    Next r
End Sub

修改#1:

要将宏限制为 F H ,请替换:

ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeConstants)

使用:

Range("F:H").Cells.SpecialCells(xlCellTypeConstants)

答案 1 :(得分:0)

也许正则表达式?

AVAssetExportSession

EDIT;如果要删除空格,这将保留空格Dim RE As Object Set RE = CreateObject("vbscript.regexp") Pattern = "(\w+\s)(U|E)" replacement = "$1" RE.Pattern = Pattern Regex = RE.Replace(Range("A1").Value, replacement) 将模式的AAA部分移动到另一个(),如:\s