编写宏以重复使用转置功能

时间:2009-03-12 15:23:30

标签: vba excel-vba excel

我正在尝试将行的值移动到Excel中的列中。转置功能运行良好,但一次只能移动一行。我想得到一个宏,它将三列中的173行数据转换为一列。请参阅下面的示例。 提前感谢您的帮助。

行:

98,058  98,058  98,314
82,362  82,684  83,326
93,410  93,479  93,761

列:

98,058
98,058
98,314
82,362
82,684
83,326
93410
93479
93761

1 个答案:

答案 0 :(得分:1)

以下内容将从A1的CurrentRegion将数据加载到数组中并从A5开始粘贴到一列中。

我假设数据是数字的,连续的,并且这是一次性的,而不是可能必须在不同大小的数据集上重复的练习。如果您的数据不是连续的,或者没有被空单元格绑定,那么您可以改为对该范围进行硬编码。

Private Sub transposeRows()
Dim inputRange As Variant
Dim myArray() As Long
Dim x As Long
Dim testCell As Range

'Get the range of data to copy'
Set inputRange = Range("A1").CurrentRegion

'Resize array to fit'
ReDim myArray(inputRange.Count - 1)

'Fill up array with data'
For Each testCell In inputRange
    myArray(x) = testCell
    x = x + 1
Next testCell

'Fill destination range'
Range("A5:A" & UBound(myArray) + 5) = WorksheetFunction.Transpose(myArray)

End Sub