在列中重新排列行数据

我有以下格式的Excel中的数据

Resource 2/2/2013 2/3/2013 2/4/2013 Name1 9 9 9 Name2 9 9 9 Name3 9 9 9 

我必须把上面的数据转换成这样的东西:

 Resource Date Hours Name1 2/2/2013 9 Name1 2/3/2013 9 Name1 2/4/2013 9 Name2 2/2/2013 9 Name2 2/3/2013 9 Name2 2/4/2013 9 Name3 2/2/2013 9 Name3 2/3/2013 9 Name3 2/4/2013 9 

有没有在excel中的任何function,可以做到这一点。 我只能findrow to columns函数没有帮助我,因为它只会transpose数据,而不是像上面创build多个条目。

甚至通过VBA ,最好的方法是什么?

这是一个VBA解决scheme:

 Sub Example() Dim Resources() As String Dim rng As Range Dim row As Long Dim col As Long Dim x As Long ReDim Resources(1 To (ActiveSheet.UsedRange.Rows.Count - 1) * (ActiveSheet.UsedRange.Columns.Count - 1), 1 To 3) 'Change this to the source sheet Sheets("Sheet1").Select 'Read data into an array For row = 2 To ActiveSheet.UsedRange.Rows.Count For col = 2 To ActiveSheet.UsedRange.Columns.Count x = x + 1 Resources(x, 1) = Cells(row, 1).Value ' Get name Resources(x, 2) = Cells(1, col).Value ' Get date Resources(x, 3) = Cells(row, col).Value ' Get value Next Next 'Change this to the destination sheet Sheets("Sheet2").Select 'Write data to sheet Range(Cells(1, 1), Cells(UBound(Resources), UBound(Resources, 2))).Value = Resources 'Insert column headers Rows(1).Insert Range("A1:C1").Value = Array("Resource", "Date", "Value") 'Set strings to values Set rng = Range(Cells(1, 3), Cells(ActiveSheet.UsedRange.Rows.Count, 3)) rng.Value = rng.Value End Sub 

原版的:

原始数据

结果:

在这里输入图像说明

我想知道是否有可能使没有VBA,似乎是。 但有一些推定,特别是你是transformin的地区是矩形的。

然后你可以使用QUOTIENT一个MOD函数(这将是可能的合并“助手列CE”在一起,但更清晰的解释,我给他们看)。

在这里输入图像说明

在A9中,我有一个列数的值(可以通过其他函数获得) – 只是有点通用。

然后我用这种方式使用INDIRECT()函数:

  • 单元格G9: =INDIRECT("R"&2+D9&"C1";FALSE)
  • 单元格H9: =INDIRECT("R1C"&2+E9;FALSE)
  • 单元格I9: =INDIRECT("R"&2+D9&"C"&2+E9;FALSE)

然后把它拖下来。