Hello s20011301,
Here is another method you can try. This first reads all the values into an array that is 18 x 31. The output range is resized to match the array and the array is output to the range in a single block transfer. With a small data set like this, you may not see any real speed again. However, with larger data sets you can see significant gains.
If you have formulas, did you set formula calculation to manual before running your macro?
Sub TestA()
Dim Data As Variant
Dim dstWks As Worksheet
Dim i As Long
Dim j As Long
Dim srcWkb As Workbook
Dim srcWks As Worksheet
Set srcWkb = Workbooks(getfilename)
Set srcWks = srcWkb.Worksheets(orgsheet)
Set dstWks = ThisWorkbook.Worksheets("ABS")
ReDim Data(1 To 18, 1 To 31)
For i = 1 To 18 * 15 Step 15
For j = 9 To 39
Data(i, j) = srcWks.Cells(i - 9, j) + srcWks.Cells(i + 3, j)
Next j
Next i
dstWks.Cells(1, 2).Resize(18, 31).Value = Data
End Sub