如何在Excel中使用VBA进行搜索和替换?

时间:2015-12-23 06:34:12

标签: excel excel-vba vba

我是VBA Excel编程的新手。考虑具有nxn值的Excel工作表。我的任务是从A列中搜索名为“TOOTHBRUSH BATT”的文本。一列包含多个“TOOTHBRUSH”值。

一旦在单元格A11中找到该值,则我需要在D11中将文本更改,即对应的D列更改为“BATTERY”。 D11已经有了一些文字,我需要用“BATTERY”替换那个文字

我的代码是

Sub replacement()

    Dim S  As String
    Dim H  As String

    S = "TOOTHBRUSH BATT"

    For i = 1 To Range("A1").End(xlDown).Row
        If Range("A" & i) = S Then
            Range("D" & i) = "BATTERY"
        End If
    Next i

End Sub

2 个答案:

答案 0 :(得分:0)

nRow = Worksheets(1).Range("A:A").Find(What:="*TOOTHBRUSH BATT*", after:=Range("A1"), LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Row

Worksheets(1).Cells(nRow,"D") = "BATTERY"

使用自动过滤器(以下代码未测试)

Worksheets(1).autofiltermode = false
Worksheets(1).Range("A:B").autofilter
Worksheets(1).AutoFilter.Range.AutoFilter Field:=1, Criteria1:="*TOOTHBRUSH BATT*"

dim nRng as range

If Worksheets(1).AutoFilter.Range.Offset(1,0).Columns(1).SpecialCells(xlCellTypeVisible).Count > 1 Then
     set nRng  = Worksheets(1).AutoFilter.Range.Offset(1,0).Columns(2).Resize(Worksheets(1).AutoFilter.Range.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
     nRng.value = "BATTERY"
End If

答案 1 :(得分:0)

这与Eric的答案相似。

knitr