简介:我一直在研究这个宏已经有一段时间了,并且已经成功地让它做我需要它做的事情,但是我并没有以最有效的方式做到这一点我的编码背景很少。因此,由于从一个工作表“FB MATE DATA”到另一个“Sheet 2(2)”复制和粘贴数据来回切换,宏非常慢。
背景:CMM机器将测量数据吐出到电子表格中,我需要在整齐的X和Y列中将其从一张纸复制并粘贴到另一张纸上,以便在散点图中重叠。问题是数据处于非常规模式,需要使用偏移,而不同的工作表具有从不同行开始的数据,因此宏必须考虑到这一点。之所以如此慢,是因为我实现这一目标的方法是不断地来回激活每个工作表,一遍又一遍地保持对活动单元的控制,而不是仅仅引用固定单元的偏移,因为偶尔会有偏移变化连续。我现在的代码:
问题:对于每一行数据,我需要复制更改的区间中的某些列(第一列,第四列,第九列,第二列等)并将其粘贴到两行中另一页上的X | Y列。
数据抓取不会始终在G21中启动。有时第一个数据点可能是G24,或G10,或G15,因此宏为什么首先搜索空行而不是从固定位置拉出。下面是前四列循环的样本。
代码:
Sub LocatorTest()
'Select first row of eligible spare pallet data
Range("B73").Select
Application.Goto (ActiveWorkbook.Sheets("FB MATE DATA").Range("A1"))
Dim c
For Each c In Range("A1:A100").Cells
If c = "" Then
c.Select
Exit For
End If
Next
ActiveCell.Offset(1, 6).Range("A1").Select
Selection.Copy
Sheets("Sheet2 (2)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C73").Select
Worksheets("FB MATE DATA").Activate
ActiveCell.Offset(rowOffset:=0, columnOffset:=4).Activate
Selection.Copy
Sheets("Sheet2 (2)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B74").Select
Worksheets("FB MATE DATA").Activate
ActiveCell.Offset(rowOffset:=0, columnOffset:=8).Activate
Selection.Copy
Sheets("Sheet2 (2)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C74").Select
Worksheets("FB MATE DATA").Activate
ActiveCell.Offset(rowOffset:=0, columnOffset:=12).Activate
Selection.Copy
Sheets("Sheet2 (2)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
您可以提供的任何帮助可能以不同的方式实现此目标或使其更快地运行将非常感激。
答案 0 :(得分:1)
但是为了方便起见,你可能想把它放在开头:
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
并在宏的末尾:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
这将给它带来巨大的速度提升。下一个;你应该尝试引用细胞而不激活......