我想根据N列中给出的标准将一系列单元格复制到另一个工作表。因此,对于每一行,它必须检查它是否符合N列中的标准。如果列N中的值= {{ 1}},它应该从该行1
复制到从第10行开始的另一个工作表。如果列N中的值= Range(Cells(j, 1), Cells(j, 8))
,它会跳过该行并检查下一行。所以它不会复制那一行。
也许我的错误代码可以比我更好地解释它:
0
答案 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