Die Excel-Datei hat 9 Blätter. Jedes Blatt hat 1668 Zeilen und 34 Lieferanten. Ich möchte 1 Blatt erstellen, das alle Daten enthält. Ich weiß, dass es Duplikate geben wird, aber das ist jetzt egal. Gibt es eine Möglichkeit, den Code zu beschleunigen? Es dauert Ewigkeiten, um etwa 510.000 Datensätze zu kopieren. (Sie können die Kommentare mit meinem ersten Versuch sehen, wenn ich es mit for-Schleifen zu tun versucht, das war keine gute Idee.)Wie beschleunigt man diesen VBA-Code?
Sub goEasy()
Dim wsText As Variant
Dim sht As Worksheet
Dim wSum As Worksheet
Dim service As String
Dim supplier As String
Dim priceRange As String
Dim price As String
Dim Lrow As Long, LastRow As Long
Dim a As Long, b As Long
Set sht = ThisWorkbook.Worksheets(4)
Set wSum = ThisWorkbook.Worksheets("Summary")
wsText = Array("<25K", "25K <100K", "100K <250K", "250K <500K", "500K <1M", "1M <5M", "5M <15M", "15M <30M", "30M <50M")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
For Each element In wsText
'For i = 5 To LastRow
a = 4
b = 12
Do While a < LastRow
'For j = 13 To 47
If a = LastRow Then
a = 4
Exit Do
End If
a = a + 1
Do While b <= 47
If b = 47 Then
b = 12
Exit Do
End If
b = b + 1
Lrow = wSum.UsedRange.Rows(wSum.UsedRange.Rows.Count).Row + 1
service = ThisWorkbook.Worksheets(element).Cells(a, 1).Text
supplier = ThisWorkbook.Worksheets(element).Cells(4, b).Text
priceRange = ThisWorkbook.Worksheets(element).Cells(2, 1).Text
price = ThisWorkbook.Worksheets(element).Cells(a, b).Text
wSum.Cells(Lrow, 1) = service
wSum.Cells(Lrow, 2) = supplier
wSum.Cells(Lrow, 3) = priceRange
wSum.Cells(Lrow, 4) = price
'Next j
Loop
'Next i
Loop
Next element
End Sub
Wenn Sie Arbeitscode haben, der nur Verbesserungen benötigt, dann sind Sie wahrscheinlich mit diesem Beitrag an der falschen Stelle. [Code Review] (http://codereview.stackexchange.com/) ist der Ort, an dem sie mit vorhandenem/funktionierendem Code umgehen und ihr Bestes geben, um sie hinsichtlich Geschwindigkeit, Sicherheit, Nachhaltigkeit und Langlebigkeit einschließlich Best Practices zu verbessern. Versuche es. Sie sind gut! – Ralph
Hilft das Ausschalten von automatischen Berechnungen und Screen-Updating überhaupt? –
Danke Ralph, das wusste ich nicht. –