Excel将同一行中的不同单元格复制,粘贴到新工作表

时间:2015-03-19 06:35:26

标签: excel vba excel-vba

如果值="是"我试图让工作簿将单元格值复制到工作表,例如,A列包含时间,列B到G有一个是/否的下拉框。如果Cell B2为Yes,那么它将时间复制到另一个工作表中,从A2到Sheet4,C列中的下一个可用行,如果G5有"是"然后它将时间从A5复制到Sheet4,Column H中的下一个可用行

我一直在尝试使用以下代码,而且我遇到了问题。如果我有"概述"它似乎只能工作。选择了表单,我似乎无法让它移动,只能向下移动。

Sub Copy()
    Dim N As Long, i As Long, j As Long
    N = Cells(Rows.Count, "C").End(xlUp).Row
    j = 4
    Set ws1 = Worksheets("Overview")
    Set ws2 = Worksheets("Sheet4")
    For i = 2 To N

        If ws1.Cells(i, "C").Value = "Yes" Then
            ws2.Cells(j, "A").Value = ws1.Cells(i, "B").Value
            j = j + 1
        End If
    Next i
End Sub

1 个答案:

答案 0 :(得分:1)

试试这个

Sub Copy()
    Dim N As Long, i As Long, j As Long

    Set ws1 = Worksheets("Overview")
    Set ws2 = Worksheets("Sheet4")

    N = ws1.Cells(Rows.Count, "C").End(xlUp).Row
    j = 4

    For Each cell In Range("B2:G" & ws1.Cells(Rows.Count, "G").End(xlUp).Row)


        If cell.Value = "Yes" Then
            ws2.Range("A" & j).Value = ws1.Range("A" & cell.Row).Value
            j = j + 1
        End If


    Next cell

End Sub

只有选择了“概览”工作表才有效,因为您已将N的值设置为活动表中的行数而不是overview sheet(ws1)。并且它没有扫描所有列,因为您的代码仅针对列C

编写

希望以上解决您的问题