2015-11-04 76 views
1

我想根據列N中給出的標準將一系列單元格複製到另一個工作表。因此,對於每一行,都必須檢查它是否滿足列N中的標準。如果列N = 1中的值,它應該從該行Range(Cells(j, 1), Cells(j, 8))複製到另一個工作表,從第10行開始。如果列N = 0中的值跳過該行並檢查下一行。所以它不會複製那一行。根據標準從一個工作表到另一個工作表的複製範圍

也許我錯了代碼可以解釋它比我好:

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

    Set i = ActiveWorkbook.Worksheet.Item(3) 
    Set e = ActiveWorkbook.Worksheets.Item(4) 
    Dim d 
    Dim j 

    d = 10 
    j = 3 

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

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

你想用'Set i = ActiveWorkbook.Worksheet.Item(3)'做什麼? – Jeeped

+0

我真的不知道,爲了激活您正在處理的工作表,我看到了某處?因爲我使用多個工作表。 – Jeroen

回答

0

試試這個。 Ive add .value and 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 
+0

是的,它現在完美了!非常感謝。最後,我可以繼續! – Jeroen

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

+0

謝謝你的反應。但仍然不起作用。現在我沒有得到任何錯誤,但它仍然沒有複製範圍。我忘了添加d = d + 1 – Jeroen

+0

我發現了一些有用的東西,但是每當我運行宏時,excelfile就會變得越來越模糊,因爲它會不斷地選擇2個工作表。我已經把代碼放在上面了。所以我更喜歡用它來做它 – Jeroen

相關問題