2016-06-21 21 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