Try
Sub Test()
Dim colSource, colTarget, ws As Worksheet, sh As Worksheet, lr As Long
Set ws = ThisWorkbook.Worksheets(1)
Set sh = ThisWorkbook.Worksheets(2)
lr = ws.Cells(Rows.Count, "C").End(xlUp).Row
colSource = Array("C:E", "H", "K", "F")
colTarget = Array("D10", "L10", "N10", "P10")
PopulateArray ws, sh, 14, lr, colSource, colTarget
End Sub
Public Sub PopulateArray(ByVal wsSource As Worksheet, ByVal shTarget As Worksheet, ByVal sRow As Long, ByVal lr As Long, ByVal rangesToPopulate, ByVal columnMappings)
Dim arr, rangeColumns, rng As Range, i As Long
Application.ScreenUpdating = False
For i = LBound(rangesToPopulate) To UBound(rangesToPopulate)
If InStr(1, rangesToPopulate(i), ":") > 0 Then
rangeColumns = Split(rangesToPopulate(i), ":")
Set rng = wsSource.Range(rangeColumns(0) & sRow & ":" & rangeColumns(1) & lr)
Else
Set rng = wsSource.Range(rangesToPopulate(i) & sRow).Resize(lr - sRow + 1)
End If
arr = rng.Value
shTarget.Range(columnMappings(i)).Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr
Next i
Application.ScreenUpdating = True
End Sub