行的某些列复制到

行的某些列复制到

我需要把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/

10-10 18:47