Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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宏查找文本并将结果存储在新工作表中_Excel_Vba - Fatal编程技术网

Excel宏查找文本并将结果存储在新工作表中

Excel宏查找文本并将结果存储在新工作表中,excel,vba,Excel,Vba,我是VBA新手,所以我的专业知识很少。我有三列A、B、C 我的目标是: 就是循环遍历整个列并查找特定的字符串。 如果它相等,那么我想获取相应的行,包括(列a、B)并将其逐行存储在(表2)中: 这是我正在做的实验,请帮忙 Sub FindString() Dim cell As Range Dim DataCount As Integer With Worksheets("Sheet1") DataCount = Range("L" & Rows.

我是VBA新手,所以我的专业知识很少。我有三列A、B、C

我的目标是: 就是循环遍历整个列并查找特定的字符串。 如果它相等,那么我想获取相应的行,包括(列a、B)并将其逐行存储在(表2)中:

这是我正在做的实验,请帮忙

 Sub FindString()
    Dim cell As Range
    Dim DataCount As Integer
    With Worksheets("Sheet1")
        DataCount = Range("L" & Rows.Count).End(xlUp).Row
        For Each cell In Range("C1:C" & DataCount)
            If InStr(cell.Value, "cmt") > 0 Then
                  MsgBox "The String is Found"
            End If
        Next cell
    End With
End Sub

有一些信息丢失,但这将使你接近。因为您已经知道何时找到字符串,所以它将复制整行并将其粘贴到Sheet2中<添加code>i有助于遍历找到的行,这样它们就不会被粘贴在彼此的顶部,而是可以更改

Sub FindString()
Dim cell As Range
Dim DataCount As Integer
Dim i As Integer

i = 1
With Worksheets("Sheet1")
    'Changed to column C instead
    DataCount = Range("C" & Rows.Count).End(xlUp).Row

    For Each cell In Range("C1:C" & DataCount)
        If InStr(cell.Value, "cmt") > 0 Then
              MsgBox "The String is Found"
              Rows(cell.Row).Copy Sheets("Sheet2").Cells(i, 1)
              i = i + 1
        End If
    Next cell
End With
End Sub

这几乎完成了它发现第一个相等并退出循环的技巧,我如何使它通过所有列C。现在DataCount变量正在计算列L中的行,将其更改为C,它应该完成。我可以选择特定列,例如仅[A&&B]如果找到字符串并通过它进入Sheet2是的,您可以改为使用“范围(单元格)”(cell.Row,1),Cells(cell.Row,2)).Copy“它应该只从该行复制A:B。我没有在这种情况下尝试过,但我相信您可以使用“Union(”来代替