检查某个范围内的每个单元格是否有特定字符串?

时间:2017-01-05 06:55:41

标签: excel vba

我想要一个VBA代码,通过它我可以检查具有特定文本的范围中的每个单元格吗?

EG: for each cell in range (a:a)
    if value of cell = "specific text"
    do this
    else 
    do that

*

如何在VBA Excel中执行此操作?

3 个答案:

答案 0 :(得分:2)

这里你去,但请先尝试在google上找到

Sub eachCell()
    Dim c As Range
    For Each c In Range("A1:D21")
        If (c.Value = "mytext") Then    'if value of cell = "specific text"
            c.Value = "other text" 'do this
            Else
            c.Value = "other text 2"  'do that
        End If
    Next c
End Sub

答案 1 :(得分:0)

使用Find循环比查看每个单元格更快

Sub Sample_Find()
    Dim rng1 As Range
    Dim rng2 As Range
    Dim bCell As Range
    Dim ws As Worksheet
    Dim SearchString As String
    Dim FoundAt As String


    Set ws = Worksheets(1)
    Set rng1 = ws.Columns(1)

    SearchString = "specific text"

    Set rng2 = rng1.Find(SearchString, , xlValues, xlWhole)

    If Not rng2 Is Nothing Then
        Set bCell = rng2
        FoundAt = rng2.Address
        MsgBox "do something here " & FoundAt
        Do
            Set rng2 = rng1.FindNext(After:=rng2)

            If Not rng2 Is Nothing Then
                If rng2.Address = bCell.Address Then Exit Do
                FoundAt = FoundAt & ", " & rng2.Address
                MsgBox "do something here " & rng2.Address
            Else
                Exit Do
            End If
        Loop
    Else
        MsgBox SearchString & " not Found"
        Exit Sub
    End If

    MsgBox "The Search String has been found these locations: " & FoundAt
    Exit Sub


End Sub

答案 2 :(得分:0)

使用AutoFilter回复帖子的另一个选项。

<强>代码

Option Explicit

Sub Test_AutoFilter()

Dim ws As Worksheet
Dim SearchString As String
Dim Rng As Range
Dim VisRng As Range
Dim c As Range

Set ws = Worksheets(1)
Set Rng = ws.Columns(1)

SearchString = "specific text"

Rng.AutoFilter
Rng.AutoFilter Field:=1, Criteria1:=SearchString

' set another range to only visible cells after the Filter was applied
Set VisRng = ws.Range(Cells(1, 1), Cells(1, 1).End(xlDown)).SpecialCells(xlCellTypeVisible)

If Not VisRng Is Nothing Then

    ' Option 1: show every cell that a SearchString was found
    For Each c In VisRng
        MsgBox "String match of " & SearchString & " found as cell " & c.Address
    Next c

    ' Option 2: show all the cells that SearchString was found (in 1 message)
    MsgBox "String match of " & SearchString & " found as cells " & VisRng.Address
End If

End Sub