gpt4 book ai didi

vba - 优化 "Copy"/"Insert Copied Cells"代码

转载 作者:行者123 更新时间:2023-12-02 12:16:29 24 4
gpt4 key购买 nike

我对 VBA 比较陌生,但被我的公司“招募”来帮助制作资源预测工具。从运行脚本到完成,我遇到了 6 秒的延迟,如果可能的话,我真的希望将其缩短到 1 或 2 秒。

顺便说一句,我的 Excel 工作表中可能有大量的“IF”、“索引/匹配”和“间接”,所有这些都跨越从 K 列到 EY 列的周末日期。 .我不确定这是我的问题还是我的代码中的问题。

仅供引用,这里是一个 Excel 公式的示例 - 如果它看起来重载并且我应该更改它,请随时告诉我

=IF(INDEX(INDIRECT("$A$3:$M$"&$K$4)),MATCH($B26,INDIRECT("$K$3:$K$"&$K$4)),0),COLUMN(F26))<40000,"InputDate",INDEX(INDIRECT("$A$3:$M$"&$K$4),MATCH($B26,INDIRECT("$K$3:$K$"&$K$4)),0),COLUMN(F26))))

这是我的 VBA 代码,分 3 个步骤运行。
Marco4() - 在项目描述表中插入行,CopyM() - 从项目表创建一个字符串(客户名称、项目编号、项目名称)项目摘要() - 复制最后 7 行范围,然后将它们插入到最后一行下方 1 行。

Sub NewProject()

Macro4
CopyM
ProjectSummary

End Sub
----------------------------------------------------------
Sub Macro4()
'insert a new line in the project description field (top)
Range("A1").End(xlDown).End(xlDown).Offset(1).EntireRow.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
Range("G3").Copy Destination:=Range("H1").End(xlDown).End(xlDown)

End Sub
-----------------------------------------------------------
Sub CopyM()
'Copy range of cells in column K which correspond only to project description field

Dim rng As Range
Dim rng2 As Range

Set rng = ActiveSheet.Range("K1").End(xlDown).End(xlDown)
Set rng2 = rng.Offset(1)
rng.Copy Destination:=rng2
Application.CutCopyMode = False

End Sub
------------------------------------------------------------
Sub ProjectSummary()

Dim lastrowe As Integer
Dim lastrowb As Integer
Dim pnext As Integer

lastrowe = Range("D2000").End(xlUp).Offset(2).Row
lastrowb = Range("A2000").End(xlUp).Offset(-1).Row
Rows(lastrowb & ":" & lastrowe).Copy
pnext = Range("D2000").End(xlUp).Offset(3).Row
Rows(pnext).Insert Shift:=xlDown

End Sub

最佳答案

INDIRECT 是一个 volatile 函数,因此只要工作簿重新计算,即使其输入没有更改,它也会重新计算。我建议使用 INDEX 代替: =IF(INDEX($A$3:INDEX($M:$M,$K$4),MATCH($B26,$K$3:INDEX($K:$K,$K$4) ),0),COLUMN(F2‌​6))<40000,"输入日期",INDEX($A$3:INDEX($M:$M,$K$4),MATCH($B26,$K$3:INDEX($ K:$K,$K‌​$4),0),COLUMN(F26)))) 这是半 volatile 的,因此仅在工作簿打开或其输入更改时才会重新计算。 – 罗里 5 月 8 日 12:41

关于vba - 优化 "Copy"/"Insert Copied Cells"代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com