最初にソース範囲をコピーしてから、Transpose:= True、短いサンプルを使用してターゲット範囲に特別に貼り付けます。
Option Explicit
Sub test()
Dim sourceRange As Range
Dim targetRange As Range
Set sourceRange = ActiveSheet.Range(Cells(1, 1), Cells(5, 1))
Set targetRange = ActiveSheet.Cells(6, 1)
sourceRange.Copy
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
Transpose関数は、Varaiant型のパラメーターを受け取り、Variantを返します。
Sub transposeTest()
Dim transposedVariant As Variant
Dim sourceRowRange As Range
Dim sourceRowRangeVariant As Variant
Set sourceRowRange = Range("A1:H1") ' one row, eight columns
sourceRowRangeVariant = sourceRowRange.Value
transposedVariant = Application.Transpose(sourceRowRangeVariant)
Dim rangeFilledWithTransposedData As Range
Set rangeFilledWithTransposedData = Range("I1:I8") ' eight rows, one column
rangeFilledWithTransposedData.Value = transposedVariant
End Sub
'転置を2回呼び出す'の目的を説明しようと思います。Excelに行データがある場合(例: "a1:h1 ") 、Range( "a1:h1")。Valueは、1から1、1から8の次元の2Dバリアント配列です。Transpose(Range( "a1:h1")。Value)を呼び出すと、次元が1から8、1から1の2Dバリアント配列が転置されます。また、 Transpose(Transpose(Range( "a1:h1")。Value))を呼び出すと、次元が1から8の1Dバリアント配列が取得されます。
最初の転置は行を列に変更し、2番目の転置は列を行に戻しますが、次元は1つだけです。
ソース範囲にさらに多くの行(列)がある場合、たとえば「a1:h3」の場合、転置関数は次のようにディメンションを変更します。1から3、1から8 1から8、1から3に転置し、その逆も同様です。
私があなたを混乱させなかったことを願っています、私の英語は悪いです、ごめんなさい:-)。