在Excel中,如何将行拆分为一组列。 A1:G1中的数据应该在第一行,然后A1:C1将与第一行相同,D1:G1应该从第一行的末尾开始。这应该继续,直到第一行中的数据限制为G1
我的数据就像
A B C D E ... AE AF AG
1 ab 2013/01/12 2013/02/23 233 2013/02/24 2013/03/11 500
2 cd 2013/01/12 2013/02/23 233 2013/02/24 2013/03/11 343
.
.
200 XX XXXX/XX/XX XXXX/XX/XX XX XXXX/XX/XX XXXX/XX/XX XXX
我需要将其拆分为:
A B C D E
1 ab 2013/01/12 2013/02/23 233
.
.
1 ab 2013/02/24 2013/03/11 500
2 cd 2013/01/12 2013/02/23 233
.
.
2 cd 2013/02/24 2013/03/11 343
.
.
如何在excel中完成,我尝试编写一个vb脚本,但它没有去任何地方。有人可以帮我解决这个问题。
答案 0 :(得分:0)
好的,所以看起来您有两个具有静态ID和名称的单元格,然后是一系列三个单元格,其显示的格式为Date
,Date
,Number
。您希望将前两个单元格右侧的所有内容都转换为重复行。这应该做。
Sub split_and_stack()
Dim c As Long, r As Long, lc As Long, lr As Long
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = ActiveSheet
Sheets.Add after:=Sheets(Sheets.Count)
Set ws2 = Sheets(Sheets.Count)
ws2.Cells(1, 1).Resize(1, 5) = Array("id", "name", "start", "end", "number")
With ws1
lr = .Cells(Rows.Count, 1).End(xlUp).Row
lc = .Cells(1, Columns.Count).End(xlToLeft).Column
For r = 1 To lr
For c = 3 To lc Step 3
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 2) = _
.Cells(r, 1).Resize(1, 2).Value
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Resize(1, 3) = _
.Cells(r, c).Resize(1, 3).Value
Next c
Next r
End With
End Sub
以下图片可能无法正确显示日期,但您应该了解一般情况。在提供样本数据时,最好不要提供可以转换为 mm / dd / yy 或 dd / mm / yy 的模糊日期。