hejredersejre
New Member
- Joined
- Aug 5, 2013
- Messages
- 7
Dear all
I'm currently working in a giant budget spreadsheet with lots of data.
I have a macro that i need to run to update my numbers.
My issue is that it takes 8 min for it to finish which is quite frustrating.
Does any of you have the skills and will to see my macro through and see if there is any room for improvement/errors in it.
Best regards
Anders
macro:
Sub Level_2_Rapport()
Application.ScreenUpdating = False
Worksheets("Data - Level 1").Activate
Range("A2").Select
Dim L1 As Long
Dim V1 As Long
Dim L2 As Long
Dim V2 As Long
Dim Test As Long
V1 = 0
V2 = 0
Worksheets("Styring").Activate
L1 = Range("G26").Value
L2 = Range("G23").Value
Worksheets("Data - Level 2").Activate
Rows("3:10000").Offset(L2, 0).Select
Selection.Delete Shift:=xlUp
Worksheets("Data - Level 1").Activate
Do Until IsEmpty(ActiveCell)
V2 = 0
Do Until IsEmpty(ActiveCell)
Range("A2").Select
ActiveCell.Offset(L1, 0).Select
'Range("A3").Select
ActiveCell.Range("A1:CA1").Select
Selection.Copy
Worksheets("Data - Level 2").Activate
Range("A2").Select
ActiveCell.Offset(L2, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Data - Level 1").Activate
Range("A2").Select
ActiveCell.Offset(L1, 79 + V2).Select
ActiveCell.Range("A1:C1").Select
Selection.Copy
Worksheets("Data - Level 2").Activate
Range("A2").Select
ActiveCell.Offset(L2, 79).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
L2 = L2 + 1
V2 = V2 + 3
Worksheets("Data - Level 1").Activate
Range("A2").Select
ActiveCell.Offset(L1, 80 + V2).Select
If Selection.Value = 0 Then
ActiveCell.Offset(0, 200).Select
Else
End If
Loop
L1 = L1 + 1
Range("A2").Select
ActiveCell.Offset(L1, 0).Select
Loop
Worksheets("Data - Level 2").Activate
Range("CE2").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-24]"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveWindow.SmallScroll ToRight:=3
ActiveCell.Offset(-1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-24]"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*RC[-24]"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-5]*RC[-24]"
ActiveCell.Offset(1, -1).Range("A1").Select
Range("CE2:CH2").Select
Selection.Copy
Range("CE2:CH2").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 1, 0)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Kopier formler
Range("CI2:HI2").Select
Selection.Copy
Range("CI3").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 2, 130)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("CE3").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 2, 134)).Select
Selection.Copy
Range("CE3").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 2, 134)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Styring").Select
Application.ScreenUpdating = True
End Sub
I'm currently working in a giant budget spreadsheet with lots of data.
I have a macro that i need to run to update my numbers.
My issue is that it takes 8 min for it to finish which is quite frustrating.
Does any of you have the skills and will to see my macro through and see if there is any room for improvement/errors in it.
Best regards
Anders
macro:
Sub Level_2_Rapport()
Application.ScreenUpdating = False
Worksheets("Data - Level 1").Activate
Range("A2").Select
Dim L1 As Long
Dim V1 As Long
Dim L2 As Long
Dim V2 As Long
Dim Test As Long
V1 = 0
V2 = 0
Worksheets("Styring").Activate
L1 = Range("G26").Value
L2 = Range("G23").Value
Worksheets("Data - Level 2").Activate
Rows("3:10000").Offset(L2, 0).Select
Selection.Delete Shift:=xlUp
Worksheets("Data - Level 1").Activate
Do Until IsEmpty(ActiveCell)
V2 = 0
Do Until IsEmpty(ActiveCell)
Range("A2").Select
ActiveCell.Offset(L1, 0).Select
'Range("A3").Select
ActiveCell.Range("A1:CA1").Select
Selection.Copy
Worksheets("Data - Level 2").Activate
Range("A2").Select
ActiveCell.Offset(L2, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Data - Level 1").Activate
Range("A2").Select
ActiveCell.Offset(L1, 79 + V2).Select
ActiveCell.Range("A1:C1").Select
Selection.Copy
Worksheets("Data - Level 2").Activate
Range("A2").Select
ActiveCell.Offset(L2, 79).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
L2 = L2 + 1
V2 = V2 + 3
Worksheets("Data - Level 1").Activate
Range("A2").Select
ActiveCell.Offset(L1, 80 + V2).Select
If Selection.Value = 0 Then
ActiveCell.Offset(0, 200).Select
Else
End If
Loop
L1 = L1 + 1
Range("A2").Select
ActiveCell.Offset(L1, 0).Select
Loop
Worksheets("Data - Level 2").Activate
Range("CE2").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-24]"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveWindow.SmallScroll ToRight:=3
ActiveCell.Offset(-1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-3]*RC[-24]"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-4]*RC[-24]"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=RC[-5]*RC[-24]"
ActiveCell.Offset(1, -1).Range("A1").Select
Range("CE2:CH2").Select
Selection.Copy
Range("CE2:CH2").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 1, 0)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Kopier formler
Range("CI2:HI2").Select
Selection.Copy
Range("CI3").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 2, 130)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("CE3").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 2, 134)).Select
Selection.Copy
Range("CE3").Select
Range(ActiveCell, ActiveCell.Offset(L2 - 2, 134)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Styring").Select
Application.ScreenUpdating = True
End Sub