2016-06-21 24 views
-3

以下代碼涉及需要更新的超過20,000行和6列公式,如何簡化它以縮短時間?由於涉及數千行和許多公式來更新,我該如何改進此代碼?

With Sheets("CDGL") 
Sheets("Rec").Range("B6").Resize(.Cells(.Rows.Count, "G").End(xlUp).Row - 1, 3).Value = Sheets("Duplicate Check").Range("A1:C" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value 
Sheets("Rec").Range("E6").Resize(.Cells(.Rows.Count, "D").End(xlUp).Row - 1, 4).Value = Sheets("Duplicate Check").Range("D1:G" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value 
Sheets("Rec").Range("I6").Resize(.Cells(.Rows.Count, "H").End(xlUp).Row - 1, 1).Value = Sheets("Duplicate Check").Range("H1:H" & .Cells(.Rows.Count, "A").End(xlUp).Row).Value 
End With 
+0

爲什麼你有'帶表格(「CDGL」)'但是使用'REC'中的'Range',但是使用CDGL上的單元?你知道的,是嗎? – BruceWayne

+0

@BruceWayne,是的,我會改變時間嗎? – Hags

回答

0

With聲明看起來很奇怪 - 但它不一定是錯的..你知道如何工作的,爲什麼我很擔心它是如何寫的?如果是這樣,那就忽略這一點。如果你不確定如何使用With,或者爲什麼我關心你是如何編寫的,讓我知道下面的代碼幾乎100%保證不做你的期望。

Sub t() 
Dim cdglWS As Worksheet 
Dim recWS As Worksheet 
Dim dupWS As Worksheet 

Set cdglWS = Sheets("CDGL") 
Set recWS = Sheets("Rec") 
Set dupWS = Sheets("Duplicate Check") 

With recWS 
    .Range("B6").Resize(.Cells(.Rows.Count, "G").End(xlUp).Row - 1, 3).Value = dupWS.Range("A1:C" & dupWS.Cells(dupWS.Rows.Count, "A").End(xlUp).Row).Value 
    .Range("E6").Resize(.Cells(.Rows.Count, "D").End(xlUp).Row - 1, 4).Value = dupWS.Range("D1:G" & dupWS.Cells(dupWS.Rows.Count, "A").End(xlUp).Row).Value 
    .Range("I6").Resize(.Cells(.Rows.Count, "H").End(xlUp).Row - 1, 1).Value = dupWS.Range("H1:H" & dupWS.Cells(dupWS.Rows.Count, "A").End(xlUp).Row).Value 
End With 

End Sub 

你對宏的目標是什麼?正如您所知,您將從Duplicate Check工作表中獲取單元格的值,然後將該值放入Rec工作表中的單元格中。

哪個單元格取決於您在CDGL工作表中的數據。它使用CDGL中的最後一行決定Rec中的哪個單元格放置值Duplicate Check。 (至少我是這麼認爲的)。這是你的意圖嗎?

在你的OP中,如果你編輯了一個你想做的事情的簡短說明,它會有所幫助。

+0

嗨@BruceWayne。我試圖完全按照您的說法進行操作,並從重複檢查中獲取一個值,並將其置於Rec WS的範圍內......但是,有成千上萬的行和許多公式使得過程變得非常漫長......我試圖找出一種方法來減少這個時間 – Hags

+0

@Hags - CDGL表單在做什麼?那是你想要數據去的地方嗎?或者只是用它來獲得你的行等。你知道我在做什麼嗎? – BruceWayne

+0

CDGL工作表沒有任何影響,我應該改變這種情況,工作表數據與Rec和Duplicate Check具體關聯,我的歉意 – Hags