Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA在一个单元格中查找多个值_Excel_Vba - Fatal编程技术网

Excel VBA在一个单元格中查找多个值

Excel VBA在一个单元格中查找多个值,excel,vba,Excel,Vba,我有一些代码来搜索单元格中的某个值,然后在找到该值时执行某些操作。我的文本步骤是在一个单元格中搜索两个值。如果找到这两个值,请执行某些操作 这是我搜索1值的代码 Dim C As Range Set SrchRng = ActiveSheet.UsedRange Do Set C = SrchRng.Find("Wash", LookIn:=xlValues) If Not C Is Nothing Then C.EntireRow.Delete Loop While N

我有一些代码来搜索单元格中的某个值,然后在找到该值时执行某些操作。我的文本步骤是在一个单元格中搜索两个值。如果找到这两个值,请执行某些操作

这是我搜索1值的代码

Dim C As Range
Set SrchRng = ActiveSheet.UsedRange
Do
    Set C = SrchRng.Find("Wash", LookIn:=xlValues)
    If Not C Is Nothing Then C.EntireRow.Delete
    Loop While Not C Is Nothing
我的问题是,我如何调整这个词来寻找两个词而不是一个词

例如,单元格可能包含

“猫坐在垫子上”

我需要找到有“猫”和“马特”两个词的细胞。 我花了很长时间在网上寻找如何做到这一点,但我发现似乎没有任何帮助

提前谢谢


I

您可以在范围内循环并检查每个单元格:

Sub FindBoth()
    Dim r As Range
    For Each r In ActiveSheet.UsedRange
        v = r.Value
        If InStr(v, "cat") > 0 And InStr(v, "matt") > 0 Then
            r.EntireRow.Delete
        End If
    Next r
End Sub


我相信如果你将参数添加到
Find
LookAt:=xlPart
中,那么你可以在单元格中找到“matt”和“cat”中的一个或两个。请你详细说明一下,matt,我不熟悉LookAt:=xlPart!非常感谢,我想做一些不同的事情来删除整行,我可以做r.EntireRow.Offset或其他什么?我已经尝试更改此代码,以便如果它找到值,它将剪切整行并粘贴到其他地方。但是,我得到一个错误,说我的目标范围不匹配。整行有3列,我使用union选择了3个要粘贴到的单元格。我不明白为什么这不管用@Gary
Dim r As Range
Dim i As Long
Dim x As Long
Dim y As Long

i = 1
x = 1
y = 1

For Each r In ActiveSheet.UsedRange
    v = r.Value
    If InStr(v, "ION") > 0 And InStr(v, "Dog") > 0 Then

        r.EntireRow.Cut
        Debug.Print (r.Value)

        Union(Cells(i, 7), Cells(x, 8), Cells(y, 9)).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        i = i + 1
        x = x + 1
        y = y + 1




    End If
Next r