1

私はVBAExcelを初めて使用し、次のようにテーブルを変換するマクロをコーディングしようとしています。

Time    Station1
0       150.0
60      250.0
200     450.0
250     650.0
...     ...

次の値を持つ転置テーブルに次のように変換します。

Time 0 60 200 250 ... Station1 150.0 250.0 450.0 650.0

これまで転置機能を使ってきましたが、事前にサイズを知っておく必要があります。

[編集]

B2:C6のテーブルで次のコードを使用していました

Sub Worksheet_Change()

Set Target = ActiveCell
Application.ScreenUpdating = False
[B2:C6].Copy
[E2].PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
Target.Select

End Sub

それは多かれ少なかれ手でコピー/貼り付けです。

4

1 に答える 1

2

を使用している場合Application.WorksheetFunction.Transpose()、バリアント配列のサイズを知る必要はありません。ただし、2つの列で最後に使用された行を参照している場合は、次のコードを試してください。

あなたの場合、2つのバリアント配列を試して、複数の行を1つの行の複数の列に入れることができます。

コード:

Option Explicit

Sub rowsToColumns()
Dim vCol1 As Variant, vCol2 As Variant
Dim lastRow As Long
Dim WS As Worksheet

Set WS = Sheets(2)
lastRow = WS.Cells(WS.Rows.Count, "B").End(xlUp).Row
'--since data starting with row 2
lastRow = lastRow - 1
vCol1 = WorksheetFunction.Transpose(WS.Range("B2").Resize(lastRow).Value)
vCol2 = WorksheetFunction.Transpose(WS.Range("C2").Resize(lastRow).Value)

'-- output to sheet
WS.Range("B10").Resize(1, UBound(vCol1)) = vCol1
WS.Range("B11").Resize(1, UBound(vCol2)) = vCol2

End Sub

シートビュー:

ここに画像の説明を入力してください

于 2013-02-25T15:38:56.547 に答える