I didn't have the startup code that sets the array, so I faked it
This seems to work to put the not Transposed to SHeet2 and the Transposed to Sheet3
Option Explicit
Dim aryIn As Variant
Sub drv()
Dim r As Long, c As Long
'---------------------------------- setup
'5 rows x 7 cols
aryIn = Worksheets("Sheet1").Range("B2").CurrentRegion.Value
'----------------------------------- part 1 - no transpose
'play with the data
For r = LBound(aryIn, 1) To UBound(aryIn, 1)
For c = LBound(aryIn, 2) To UBound(aryIn, 2)
aryIn(r, c) = 2 * aryIn(r, c)
Next c
Next r
'no Transpose, still 5 rows x 7 cols
Worksheets("Sheet2").Range("C5").CurrentRegion.ClearContents
Call WriteArrayToSheet(aryIn, Worksheets("Sheet2").Range("C5"))
'----------------------------------- part 2 - with transpose
'play with the data again
For r = LBound(aryIn, 1) To UBound(aryIn, 1)
For c = LBound(aryIn, 2) To UBound(aryIn, 2)
aryIn(r, c) = 1.5 * aryIn(r, c)
Next c
Next r
'with Transpose, now 7 rows x 5 cols
Worksheets("Sheet3").Range("C5").CurrentRegion.ClearContents
Call WriteArrayToSheet(aryIn, Worksheets("Sheet3").Range("C5"), True)
End Sub
Sub WriteArrayToSheet(vArray As Variant, StartAt As Range, _
Optional bTranspose As Boolean = False)
'not all arrays start at 1 and go to N
Dim cntRows As Long, cntCols As Long
cntRows = UBound(vArray, 1) - LBound(vArray, 1) + 1
cntCols = UBound(vArray, 2) - LBound(vArray, 2) + 1
If bTranspose Then
StartAt.Resize(cntCols, cntRows).Value = Application.Transpose(vArray)
Else
StartAt.Resize(cntRows, cntCols).Value = vArray
End If
End Sub