在列中重新排列行数据
我有以下格式的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)
然后把它拖下来。