按列值重新格式化数据集

我有一个关于在Excel中重新格式化大数据子集的问题。 就目前而言,数据分为四列,按照如下“块”值sorting。

在这里输入图像说明

我想要的是创build一个函数(或者可能是macros),它可以对数据进行sorting,并获取对应于“Block”值为2的所有数据,将这些值删除,并将它们粘贴到“F635 Mean”对应于块1的值。我想要重复块3的过程以及其他可能存在的块值。 结果应该是这样的:

在这里输入图像说明

当然,我手动做了这个,但是当块号扩展到20+时,这是很乏味的。 我试图创build一个macros来做到这一点,但似乎无法得到它的工作(并没有保存,否则我会张贴我的代码…对不起)。

任何帮助将非常感激。 提前致谢。

如果您的“块”值已经在您的示例中,那么我认为这将工作:

Sub FunnySort() Dim ws As Worksheet Dim row, lastRow, newRow, newCol, block, oldBlock As Integer Dim fromCell, toCell As Range Set ws = Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).row oldBlock = ws.Range("B2").Value2 newCol = 1 For row = 3 To lastRow block = ws.Cells(row, 2).Value2 If block = oldBlock And newCol = 1 Then ' same initial block -- don't do anything Else If block <> oldBlock Then newRow = 2 newCol = newCol + 5 oldBlock = block End If Set fromCell = ws.Cells(newRow, newCol) Set toCell = ws.Cells(newRow, newCol + 4) ws.Range(fromCell, toCell).Value2 = ws.Range("A" & row & ":E" & row).Value2 newRow = newRow + 1 ws.Range("A" & row & ":E" & row).Clear End If Next row End Sub 

如果不是这样,那很容易添加。

此外,这假设,如果你的“块”值跳过数字(即从3到5),它也不会跳过一个列块,它只会采取下一个可用。 从你的例子来说,我不知道你想要什么样的行为。 如果你想跳过,这很容易融入以及。