Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 我如何改进这段代码,因为它需要更新数千行和许多公式?_Excel_Vba - Fatal编程技术网

Excel 我如何改进这段代码,因为它需要更新数千行和许多公式?

Excel 我如何改进这段代码,因为它需要更新数千行和许多公式?,excel,vba,Excel,Vba,下面的代码涉及20000多行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").R

下面的代码涉及20000多行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

你的
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
你的宏目标是什么?现在,您将从
重复检查
工作表中获取一个单元格的值,然后将该值放入
记录
工作表中的一个单元格中

哪个单元格取决于您的
CDGL
工作表中的数据。它使用
CDGL
中的最后一行来决定
Rec
中的哪个单元格放置
重复检查中的值。(至少我这么认为)。这是你的意图吗


在您的OP中,如果您在编辑时简要说明您正在尝试执行的操作,这将有所帮助。

为什么您有带工作表的
(“CDGL”)
,但使用“REC”中的
范围,但使用CDGL上的单元格?你知道,是吗?@BruceWayne,是的,我知道这会改变时间吗?嗨@BruceWayne。我正试图完全按照你所说的做,从重复检查中取一个值,并将其放入Rec WS的范围内……然而,有数千行和许多公式使得这个过程非常漫长……我正试图找出一种方法来减少这个过程time@Hags-CDGL的
CDGL
工作表在做什么?这就是你想要数据去的地方吗?或者只是用它来获得你的行等等。你知道我在说什么吗?CDGL表没有影响,我应该改变这一点,表数据专门关联Rec和重复检查,我的apologies@Hags-我已经更新了代码。现在,我想它会满足你的要求。检查范围是否正确拉取,我不确定您是否希望
recWS
成为“主工作表”,因此根据需要进行切换。如果我希望在最后更新公式,我将如何包括这些内容@布鲁斯韦恩