Witajcie,
Zwracam się do Was z prośbą o pomoc.
W pracy otrzymuję raport, który niestety nie jest do końca "przyjazny" do późniejszej obróbki, więc musiałem stworzyć kod, żeby to ogarnął.
Kod działa, ale jego działanie trwa bardzo długo... Czasami trwa 30-40 min, bo tyle jest tych danych, a komputer pracuje jak odrzutowiec...
W załączniku przykład z losowymi wartościami.
Bardzo proszę o wsparcie w przyspieszeniu generowania/przerabiania raportu.
Mam to:
Chciałbym uzyskać to:
Mój kod to:
Zwracam się do Was z prośbą o pomoc.
W pracy otrzymuję raport, który niestety nie jest do końca "przyjazny" do późniejszej obróbki, więc musiałem stworzyć kod, żeby to ogarnął.
Kod działa, ale jego działanie trwa bardzo długo... Czasami trwa 30-40 min, bo tyle jest tych danych, a komputer pracuje jak odrzutowiec...
W załączniku przykład z losowymi wartościami.
Bardzo proszę o wsparcie w przyspieszeniu generowania/przerabiania raportu.
Mam to:
Chciałbym uzyskać to:
Mój kod to:
Sub Dzielenie_numerów_zamówień()
'
' Makro3 Makro
'
'
Application.ScreenUpdating = False
'Application.ScreenUpdating = False
poczatek: Range("F1").Select
Range("F1").Select
Selection.End(xlDown).Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 5).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -1).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 32).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -1).Range("A1").Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, -1).Range("A1").Select
End If
Else:
'Koniec_pracy
Range("A1").Select
Application.ScreenUpdating = True
GoTo Koniec
End If
'2
ActiveCell.Offset(-1, -29).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 6).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -2).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 33).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -2).Range("A1").Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, -2).Range("A1").Select
End If
Else:
GoTo poczatek
End If
'3
ActiveCell.Offset(-1, -28).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 7).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -3).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 34).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -3).Range("A1").Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, -3).Range("A1").Select
End If
Else:
GoTo poczatek
End If
'4
ActiveCell.Offset(-1, -27).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 8).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -4).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 35).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -4).Range("A1").Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, -4).Range("A1").Select
End If
Else:
GoTo poczatek
End If
'5
ActiveCell.Offset(-1, -26).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 9).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -5).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 36).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -5).Range("A1").Select
ActiveSheet.Paste
Else
ActiveCell.Offset(1, -5).Range("A1").Select
End If
Else:
GoTo poczatek
End If
'6
ActiveCell.Offset(-1, -25).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 10).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -6).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 37).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -6).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -6).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -24).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 11).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -7).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 38).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -7).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -7).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -23).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 12).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -8).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 39).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -8).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -8).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -22).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 13).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -9).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 40).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -9).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -9).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -21).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 14).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -10).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 41).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -10).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -10).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -20).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 15).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -11).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 42).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -11).Range("A1").Select
ActiveSheet.Paste
' End If
Else
ActiveCell.Offset(1, -11).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -19).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 16).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -12).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 43).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -12).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -12).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -18).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 17).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -13).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 44).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -13).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -13).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -17).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 18).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -14).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 45).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -14).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -14).Range("A1").Select
End If
Else:
GoTo poczatek
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ActiveCell.Offset(-1, -16).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 19).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -15).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 46).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -15).Range("A1").Select
ActiveSheet.Paste
' End If
Else
ActiveCell.Offset(1, -15).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -15).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 20).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -16).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 47).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -16).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -16).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -14).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 21).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -17).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 48).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -17).Range("A1").Select
ActiveSheet.Paste
' End If
Else
ActiveCell.Offset(1, -17).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -13).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 22).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -18).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 49).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -18).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -18).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -12).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 23).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -19).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 50).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -19).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -19).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -11).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 24).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -20).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 51).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -20).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -20).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -10).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 25).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -21).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 52).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -21).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -21).Range("A1").Select
End If
Else:
GoTo poczatek
End If
ActiveCell.Offset(-1, -9).Range("A1").Select
If ActiveCell <> "" Then
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 25).Range("A1").Select
Selection.Cut
ActiveCell.Offset(1, -21).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(-1, 52).Range("A1").Select
If ActiveCell <> "" Then
Selection.Cut
ActiveCell.Offset(1, -22).Range("A1").Select
ActiveSheet.Paste
'End If
Else
ActiveCell.Offset(1, -22).Range("A1").Select
End If
Else:
GoTo poczatek
End If
GoTo poczatek
Koniec:
Exit Sub
Application.ScreenUpdating = True
End Sub