我需要把A页每一行的某些列复制到B页。
我已经创建了一个sub,它创建了两个匹配列号的数组(变体),因此我可以将表A中的列3映射为表B中的列8,等等。
一切都很好,事情是很慢,这里是:
Sub insertIntoSelectedOpps(opCols As Variant, siebelCols As Variant, ByVal length As Integer)
Dim insertRange As Range
Dim siebelRange As Range
Dim rowCount As Integer
Set insertRange = shSelected.Range("a3", "bb4") 'very wide table!'
Set siebelRange = shDatabase.UsedRange.Rows
rowCount = siebelRange.Rows.count
MsgBox "siebel row count: " & rowCount
For i = 2 To rowCount
Set insertRange = shSelected.Range("a3", "bb4")
insertRange.Insert
For x = 1 To length - 1
If opCols(x) <> -1 Then 'unequal to -1'
insertRange.Cells(1, opCols(x)).value = siebelRange.Cells(i, siebelCols(x)).value
End If
Next x
Next i
End Sub
不用担心if情况,这是业务逻辑,以防在映射中找不到列名。
最佳答案
通常,在进行大规模治疗之前停止屏幕更新和计算是一个好主意:
在msgbox
之后:
Application.ScreenUpdating = False
xlCalc = Application.Calculation
Application.Calculation = xlCalculationManual
在
next
之后Application.Calculation = xlCalc
Application.ScreenUpdating = True
这会加快速度另外,查看this page了解更多速度调整
关于algorithm - 帮助我优化VBA Excel代码,以将工作表中每行的某些列复制到另一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3332380/