Excelmacros来分解数据

我收到之前已经堆叠的数据。 单个统一标识有多行值。 我想通过添加列和拉入指定范围的数据将这些多行转换为单行。 所以我最初的数据如下所示: 在这里输入图像说明

而我的输出数据应该是这样的:

在这里输入图像说明

理想情况下,我希望看到macros观两种方式 – 在这种情况下,它是在一个列(B:C)的范围内拉。 但是,如果所需的列不是连续的(例如B和E),我也希望看到它。

感谢您的任何帮助,感谢它!

这应该通过将数据拆分到Sheet2来做到你想要的,这样Sheet1就不会被覆盖 – 基本上是更安全的事情。 它不会在Sheet2中创build表格,而只是写出数据。

它由两个内部循环组成:一个循环遍历相同的代码,另一个循环遍历其余部分。 您必须确保Cell B1的标题值不等于第一个ID值 – 考虑到您的ID是数字,而B1总是“ID”,这不应该是个问题。

 Sub UnstackData() Dim wSht1 As Worksheet, wSht2 As Worksheet Set wSht1 = Sheets("Sheet1") Set wSht2 = Sheets("Sheet2") Dim r As Integer: r = 2 Dim r2 As Integer: r2 = 1 Dim r1 As Integer, c2 As Integer With wSht1 wSht2.Rows(1).Value = .Rows(1).Value r1 = .Cells(.Rows.Count, "A").End(xlUp).Row Do While r <= r1 c2 = 6 Do While .Cells(r, "A") = .Cells(r - 1, "A") wSht2.Cells(r2, c2).Value = .Cells(r, "B").Value wSht2.Cells(r2, c2 + 1).Value = .Cells(r, "C").Value c2 = c2 + 2 r = r + 1 Loop r2 = r2 + 1 Do While .Cells(r, "A") <> .Cells(r - 1, "A") wSht2.Range("A" & r2 & ":E" & r2).Value = .Range("A" & r & ":E" & r).Value r = r + 1 r2 = r2 + 1 Loop r2 = r2 - 1 Loop End With End Sub