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

时间:2016-09-06 03:38:42

标签: excel excel-vba excel-2013 vba

我有一张excel表,其中包含具有某些地理参数的行。我想将文件和下一个文件之间的所有行转置到相邻列。原始图纸就像是图像中的图纸 - 1.我希望它像Image - 2中那样转换。

对于One Row - One Column,我使用了这段代码http://www.mrexcel.com/forum/excel-questions/79645-copying-alternate-rows-data-into-column.html,它完美无缺。但是不知道如何为多行 - 列转置

enter image description here

2 个答案:

答案 0 :(得分:1)

这是一个VBA解决方案

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

答案 1 :(得分:0)

这适用于Google表格。 作为一个样本,我有3条记录,每条记录有4个项目,所以我有从A1到A12的数据代表我的3条记录。 您想要创建一个列,例如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并抓住了正确的数据。