【发布时间】:2019-07-28 12:36:08
【问题描述】:
我对 Excel VBA 很陌生,我目前正尝试从多行中获取数据并将其转换为单列。我知道数据的第一个单元格将从哪里开始,但这就是我所知道的。每行数据是不同大小的行,也可以有不同数量的列。
所以我目前的方法是使用一种转置,我只选择一个非常大的范围(希望它捕获我的所有数据)然后转置它。它确实有效,尽管速度很慢,而且它还包括我范围内的所有空白。
Sub transpose()
Dim InputRange As Range
Dim OutputCell As Range
Set InputRange = Sheets("Sheet1").Range("P1:AC100")
'output will begin at this cell and continue down.
Set OutputCell = Sheets("Sheet1").Range("A1")
For Each cll In InputRange
OutputCell.Value = cll.Value
Set OutputCell = OutputCell.Offset(1, 0)
Next
End Sub
当前的方法并不是最差的,但我确信有更好的方法可以更快并且忽略空白。我不确定实际的转置是否是最好的方法,或者可能使用某种循环方法。数据通常包含在 200 行和 10 列中,如果这有助于确定方法(也许循环可能足够快)。任何帮助将不胜感激!
编辑
我找到了一种忽略空格的方法:
For Each cll In InputRange
If Not IsEmpty(cll.Value) Then
OutputCell.Value = cll.Value
Set OutputCell = OutputCell.Offset(1, 0)
End If
Next
【问题讨论】:
-
或许你可以贴一张前后截图。