1

我是 VBA excel 的新手,我正在尝试编写一个可以转换如下表格的宏:

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(),不需要知道变量数组的大小。但是,如果您指的是两列中的 Last used 行,请尝试以下代码。

在您的情况下,您可以尝试使用两个变体数组将多行放入一行中的多列中

代码:

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 回答