Another approach could be to copy the data into arrays and write the arrays back but I am not sure if this is really faster than the appoach with formulas and then replacing the formulas with the values
Sub TestIt()
Dim i As Long
Dim ws As Worksheet
Dim aDat As Variant, cdat As Variant, hDat As Variant, lastRow As Long
TurnOff
For Each ws In Worksheets
With ws
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
aDat = .Range("A2:A" & lastRow).Value2
cdat = .Range("C2:C" & lastRow).Value2
ReDim hDat(1 To lastRow, 1 To 1)
For i = LBound(aDat) To UBound(aDat)
hDat(i, 1) = aDat(i, 1) & cdat(i, 1)
Next i
.Range("H2:H" & lastRow).Value2 = hDat
End With
Next
TurnOn
End Sub
Sub TurnOff()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
End Sub
Sub TurnOn()
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
End Sub