如何将行转换为以特定值开始的两个单元格之间的列?

我有一个Excel表格,它将有一定的地理参数的行。 我想转置文件和下一个文件之间的所有行到相邻的列。 原始的图像就像Image – 1中的图像。我想要像Image – 2中那样转置它。

对于一行 – 一列,我用这个代码http://www.mrexcel.com/forum/excel-questions/79645-copying-alternate-rows-data-into-column.html ,它的作品完美。 但不知道如何做多行 – 列转置

在这里输入图像说明

这是一个VBA解决scheme

Sub TransposeData() Const FirstRow As Long = 1 Const WorkSheetName As String = "Sheet4" Dim arData, v Dim List As Object Set List = CreateObject("System.Collections.ArrayList") Dim NextRow As Long, x As Long With Worksheets(WorkSheetName) arData = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Value NextRow = WorksheetFunction.CountA(.Range("B:B")) + 1 For Each v In arData If InStr(v, "File:") And List.Count > 0 Then .Cells(NextRow, "B").Resize(1, List.Count) = List.ToArray List.Clear NextRow = NextRow + 1 End If List.Add v Next If List.Count > 0 Then .Cells(NextRow, "B").Resize(1, List.Count) = List.ToArray End With End Sub 

这适用于Google表格。 作为一个样本,我有3个logging,每个logging有4个项目,所以我有数据从A1到A12代表我的3条logging。 你想创build一个例如B的列,其数字从0到任何。

然后在C1单元格中,可以使用= INDEX($ A $ 1:$ A $ 12,$ B1 * 4 + 1,1)

在单元格D1中,您可以使用= INDEX($ A $ 1:$ A $ 12,$ B1 * 4 + 2,1)

在单元格E1中,您可以使用= INDEX($ A $ 1:$ A $ 12,$ B1 * 4 + 3,1)

在单元格F1中,您可以使用= INDEX($ A $ 1:$ A $ 12,$ B1 * 4 + 4,1)

所以我完成了第一行,然后我只需点击并拖动填充其余的行,因为$ B1 1没有美元符号,它会自动读取从$ B2和$ B3的下一行,抓住了正确的数据。