Excel VBA编程将特定行从sheet1复制到sheet2特定单元格

时间:2016-05-11 20:27:37

标签: excel-vba vba excel

我想编写一个vba代码,它将从sheet1的特定列中搜索数据并复制这些行并将其粘贴到sheet2。我写了代码,但发现了一个问题。这是下面的代码。

    Sheets("Sheet1").Select
    Range("D1").Select
    Dim mycode As Worksheet
    Set mycode = ThisWorkbook.Worksheets("Sheet2")
    Dim i As Long
    For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
        If Cells(i, 4).Value = "high" Then
            Range(Cells(i, 1), Cells(i, 8)).Copy Destination:=mycode.Range("A" & mycode.Cells(Rows.Count, "A").End(xlUp).Row + 1)
            ElseIf Cells(i, 4).Value <> "high" Then
            Sheets("Sheet2").Select
            Range("A2").Value = "No Crtical Logs Found"
            End If
        Next i
    End Sub

从sheet1列D(number4)我搜索匹配“high”的数据并将这些行复制粘贴到sheet2。如果列D中没有任何“高”,那么“无需操作”将写在sheet2上的单元格A2中。但问题是当“高”值不存在时它工作正常但是当D列表1中存在“高”值时,则所有时间“无需动作”值将出现在sheet2上的单元格A2上。请帮我纠正这个。

No Crtical Logs Found   4/11/2016   Critical    high        192.168.1.1 This is the sample excel sheet  Action Required

此致 皮纳基环礁

2 个答案:

答案 0 :(得分:0)

您过早离开 Sheet1

Sub fhskdfh()
    Sheets("Sheet1").Select
    Range("D1").Select
    Dim mycode As Worksheet
    Set mycode = ThisWorkbook.Worksheets("Sheet2")
    Dim i As Long
    For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
        MsgBox i & vbCrLf & Cells(i, 4).Value
        If Cells(i, 4).Value = "high" Then
            Range(Cells(i, 1), Cells(i, 8)).Copy Destination:=mycode.Range("A" & mycode.Cells(Rows.Count, "A").End(xlUp).Row + 1)
        End If
    Next i
End Sub

答案 1 :(得分:0)

更改&#34;找不到Crtical Logs的目的地&#34;信息
来自

Sheets("Sheet2").Select Range("A2").Value


Sheets("Sheet2").Range("A2").Value

在为其指定值之前,您无需选择单元格。