Based on the update, a loop is required, avoiding .Select will still help performance:
Sub test()
On Error GoTo CleanExit
' Application.ScreenUpdating = False
Dim row As Long
For row = 40 To 1539
With Sheet1
.Range("C2").FormulaR1C1 = "=R" & CStr(row) & "C2"
.Range("C3").FormulaR1C1 = "=R" & CStr(row) & "C3"
.Range.Cells.Item(4, row).Value2 = .Range("e2").Value2
End With
Next
CleanExit:
Application.ScreenUpdating = True
End Sub
Note in this case the With Sheet1 - you can use the worksheet's (Name) property as a direct reference to it (you'll have to modify this for your Workbook):
Note that this is not the same as the .Name of the worksheet as displayed on the "tab":
Additionally, I've added Application.ScreenUpdating = False, but left it commented out for now. Make sure your new code is working properly before enabling this. This will prevent Excel from refreshing the screen with each step it takes. Removing all the UI activity reduces the amount of execution time (it's not a panacea, though). Note the addition of the On Error Goto... to ensure that if anything were to go wrong during execution, it will reenable ScreenUpdating. If you don't weird and confusing things happen.
