根据条件将范围从一个工作表复制到另一个工作表

时间:2015-11-04 21:16:18

标签: excel vba excel-vba

我想根据N列中给出的标准将一系列单元格复制到另一个工作表。因此,对于每一行,它必须检查它是否符合N列中的标准。如果列N中的值= {{ 1}},它应该从该行1复制到从第10行开始的另一个工作表。如果列N中的值= Range(Cells(j, 1), Cells(j, 8)),它会跳过该行并检查下一行。所以它不会复制那一行。

也许我的错误代码可以比我更好地解释它:

0

2 个答案:

答案 0 :(得分:1)

使用多个电子表格时,您需要小心并确保所有.Range.Cells引用都包含您想要的工作表。首先,将If语句替换为此语句:

If i.Range("N" & j) = "1" Then 
    e.Range(e.Cells(d, 1), e.Cells(d, 8)) = i.Range(i.Cells(j, 1), i.Cells(j,8))
End If

或者,您可以使用With(我个人更喜欢):

With i
 If .Range("N" & j) = "1" Then
     e.Range(e.Cells(d,1),e.Cells(d,8)) = .Range(.Cells(j,1),.Cells(j,8))
 End If
End with

如果没有明确引用工作表,Cells()Range()将推迟到ActiveSheet中的任何一个。

答案 1 :(得分:0)

试试这个。我添加.value和d = d + 1

    Sub TCoutput()
       Dim i As New Worksheet
       Dim e As New Worksheet

       Set i = ActiveWorkbook.Worksheets.Item(1)
       Set e = ActiveWorkbook.Worksheets.Item(2)
       Dim d
       Dim j

       d = 10
       j = 3

       Do Until IsEmpty(i.Range("N" & j))

           If i.Range("N" & j) = "1" Then
               e.Range(e.Cells(d, 1), e.Cells(d, 8)).Value = i.Range(i.Cells(j, 1), i.Cells(j, 8)).Value
                d = d + 1
           End If
           j = j + 1
       Loop
    End Sub