I had a really hard time following the macro, and the suggestions below are most likely not 100% right
I addition to SamT's, I've found it to generate less errors to debug if I always fully define the worksheet.
I.e. Range(...) refers to what ever the active sheet is, but Worksheets("Sheet1").Range (...) is explicit
Option Explicit
Sub last()
Dim iRowNum As Long, iNumRows As Long
Dim wsData As Worksheet, wsCalc As Worksheet, wsAssessment As Worksheet
Set wsData = Worksheets("DATA")
Set wsCalc = Worksheets("CALCULATION")
Set wsAssessment = Worksheets("DATA_ASSESSEMENT")
iNumRows = wsData.Range("A2", Range("A2").End(xlDown)).Row
For iRowNum = 2 To iNumRows
wsCalc.Range("E1").Value = wsData.Cells(iRowNum, 5).Value
wsCalc.Range("B3").Value = wsData.Cells(iRowNum, 17).Value & " " & wsData.Cells(iRowNum, 18).Value
wsCalc.Range("C3").Value = wsData.Cells(iRowNum, 2).Value
wsCalc.Range("D3").Value = wsData.Cells(iRowNum, 3).Value ' C3 repeated???
wsCalc.Range("C6").Value = wsData.Cells(iRowNum, 1).Value
wsCalc.Range("D6").Value = wsData.Cells(iRowNum, 1).Value
wsCalc.Range("E6").Value = wsData.Cells(iRowNum, 1).Value
wsCalc.Range("C9").Value = wsData.Cells(iRowNum, 25).Value
wsCalc.Range("C10").Value = wsData.Cells(iRowNum, 19).Value
wsCalc.Range("C11").Value = wsData.Cells(iRowNum, 24).Value
wsCalc.Range("C15").Value = wsData.Cells(iRowNum, 31).Value
wsCalc.Range("C18").Value = wsData.Cells(iRowNum, 21).Value
wsCalc.Range("C19").Value = wsData.Cells(iRowNum, 28).Value
wsData.Range("C20").Value = wsCalc.Range("AF2").Value
wsData.Rows(iRowNum).Copy ' or maybe wsData.Rows(3).Copy ??????
wsAssessment.Cells(1, 1).End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Next iRowNum
End Sub