【发布时间】:2021-04-04 13:05:29
【问题描述】:
我正在尝试将多列行转换为一列
我知道有人问过这个问题,我已经尝试过一段时间,但无法根据需要让它工作。我在前面的例子中遇到的问题是输出不是我需要的格式,它对数字进行分组而不是按顺序排列。
示例数组是:
1 1 1
2 2 2
3 3 3
4 4 4
输出:
1
2
3
4
1
2
3
4
1
2
3
4
我知道这种大小的数据可以在 excel 的查询编辑器中完成。但我需要将数据序列复制到 2300 行。因此,我的示例数组数据将包含 2300 行,这需要很长时间才能取消透视。此外,unpivot 函数不会将数据合并到订单中。
我已经从post 尝试了这个示例,但它无法根据需要开始工作。获取未定义的函数或子。
Sub Tester()
Dim p
'get the unpivoted data as a 2-D array
p = UnPivotData(Sheets("Sheet1").Range("A1").CurrentRegion, _
3, False, False)
With Sheets("Sheet1").Range("H1")
.CurrentRegion.ClearContents
.Resize(UBound(p, 1), UBound(p, 2)).Value = p 'populate array to sheet
End With
'EDIT: alternative (slower) method to populate the sheet
' from the pivoted dataset. Might need to use this
' if you have a large amount of data
'Dim r As Long, c As Long
'For r = 1 To Ubound(p, 1)
'For c = 1 To Ubound(p, 2)
' Sheets("Sheet2").Cells(r, c).Value = p(r, c)
'Next c
'Next r
End Sub
我是 VBA 新手,并没有进行太多探索,我正在尝试为这项工作找到一个示例。
编辑
示例是否可以灵活地允许包含 500 多行的列数组,而不是仅匹配示例中的范围?
【问题讨论】:
-
您的表格是否以
A1开头?它有标题吗?你想要来自例如的数据吗?A2:C5复制到H2:H13?据了解C5为CLastRow。请确认或澄清。使用不同数据的示例可能更合适。 -
没有标题,我拥有的数据只有 1-4 我想将 x 行的列转换为一列。启动单元格 A1