将多行转置为一列

时间:2017-08-02 08:26:59

标签: excel

我有下表:

count = 0
for a in range(1, int((e - N - M - P) / T))
  for b in range(1, int((e - T*a - M - P) / N))
    for c in range(1, int((e - T*a - N*b - P) / M))
      count = count + int((e - T*a - N*b - M*c) / P)

我想要以下

ID           Description
1              name1
2              name2
3              name3
4              name4

你特别提出建议吗? 已经尝试了一些其他的转置方法,但我无法一次管理两行。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

如果您愿意使用配方,那么以下内容可能会有所帮助。

Cell D2

中输入以下公式
=INDEX($A$2:$B$5,1+INT((ROW(A1)-1)/COLUMNS($A$2:$B$5)),MOD(ROW(A1)-1+COLUMNS($A$2:$B$5),COLUMNS($A$2:$B$5))+1)

根据需要拖动/复制。见图片以供参考。

enter image description here

对于@Vityata:

数据位于G17:H20,公式位于I10

enter image description here

数据位于G18:H21,公式位于I12

enter image description here

答案 1 :(得分:1)

您可以使用基于OFFSET的公式

=OFFSET($A$1,INT((ROW(A1)-1)/2),MOD(ROW(A1)-1,2))

答案 2 :(得分:1)

使用 VBA宏,您可以这样做:

Sub Transpose1()
    Worksheets("Sheet1").Select

    Range("C1").Value = "ID+Name"

    'Get Worksheet
    Dim ws As Worksheet: Set ws = Worksheets("Sheet1")
    'Find last row
    Dim LastRow As Long: LastRow = ws.UsedRange.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

    Dim i As Long, j As Long, RowCounter As Long: RowCounter = 2
    Dim DestCol As Long
    DestCol = 3

    With ws
        'loop through all rows
        For i = 2 To LastRow
            'set value in row=1,col=3, with value from row=i,col=1
            .Cells(RowCounter, DestCol) = ws.Cells(i, 1)
            RowCounter = RowCounter + 1

            'set value in row=2,col=3, with value from row=i,col=2
            .Cells(RowCounter, DestCol) = ws.Cells(i, 2)
            RowCounter = RowCounter + 1
        Next i
    End With
End Sub

假设您在工作表的列 A 上的 Sheet1 上有2列 ID 描述 B 分别。此宏将在 C 列中输出所需的格式。请查看代码中的注释以便更好地理解。