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
Vba 将包含字符串的行从一个工作簿复制到另一个工作簿_Vba_Excel_Rows - Fatal编程技术网

Vba 将包含字符串的行从一个工作簿复制到另一个工作簿

Vba 将包含字符串的行从一个工作簿复制到另一个工作簿,vba,excel,rows,Vba,Excel,Rows,我发现这段代码搜索工作表中的H列,并将包含单词“apply”的单元格复制到新工作簿中。 然后,我尝试更改它,使它可以复制整行,但无法找出我做错了什么,因为它现在只打开一个新工作簿并将其保留为空。 有人能看看代码,告诉我我做错了什么吗? 非常感谢 Sub test() Dim K, X As Long, r As Range, v As Variant K = 1 X = 5 Dim w1 As Workbook, w2 As Workbook Set w

我发现这段代码搜索工作表中的H列,并将包含单词“apply”的单元格复制到新工作簿中。 然后,我尝试更改它,使它可以复制整行,但无法找出我做错了什么,因为它现在只打开一个新工作簿并将其保留为空。 有人能看看代码,告诉我我做错了什么吗? 非常感谢

Sub test()

    Dim K, X As Long, r As Range, v As Variant
    K = 1
    X = 5
    Dim w1 As Workbook, w2 As Workbook
    Set w1 = ThisWorkbook
    Set w2 = Workbooks.Add
    w1.Activate
    For Each r In Intersect(Range("H:H"), ActiveSheet.UsedRange)
        v = r.Value
        X = X + 1
        If InStr(v, "applied") > 0 Then
            '**Initial line** - r.Copy w2.Sheets("Sheet1").Cells(K, 1)
            With w2
            w1.Sheets("Sheet1").Rows("X:X").Copy .Sheets("Sheet1").Rows("K")
            K = K + 1
            End With
        End If
    Next r
End Sub

您的代码中有多个错误

  • 您正在使用字符串作为行引用。“X:X”将解析为字符串X:X。它不会替换字符串中的X值。与第2页上的“K”相同

  • 您正在复制“应用”所在行下方的第五行

如果要复制同一行,我建议:

Dim K, X As Long, r As Range, v As Variant
K = 1
Dim w1 As Workbook, w2 As Workbook
Set w1 = ThisWorkbook
Set w2 = Workbooks.Add
w1.Activate
For Each r In Intersect(Range("H:H"), ActiveSheet.UsedRange)
    v = r.Value
    X = X + 1
    If InStr(v, "applied") > 0 Then
       r.EntireRow.Copy w2.Sheets("Sheet1").Rows(K)
        K = K + 1
    End If
Next r
您还可以将复制行更改为:

r.EntireRow.Copy w2.Sheets("Sheet1").Cells(K, 1)

但我不知道这一个是否比另一个更有效。

谢谢,这帮了大忙!