将Excel行转换为列
如何将列A中的行转换为列B中的行并将其转换为单行?
这是我目前的设置:
ColumnA ColumnB Question1 Answer1 Question2 Answer2 Question3 Answer3 Question4 Answer4 Question5 Answer5 Question1 Answer6 Question2 Answer7 Question3 Answer8 Question4 Answer9 Question5 Answer10
我想要的是:
Question1 Question2 Question3 Question4 Question5 Answer1 Answer2 Answer3 Answer4 Answer5 Answer6 Answer7 Answer8 Answer9 Answer10
我认为这最好用VBAmacros来解决。 如果您在Sheet1
获得了当前表格并想要转换为Sheet2
则以下macros将执行转换。
Option Explicit Sub ConvertRows() Dim ws1 As Worksheet, ws2 As Worksheet Dim i As Integer, j As Integer Set ws1 = ActiveWorkbook.Sheets("Sheet1") Set ws2 = ActiveWorkbook.Sheets("Sheet2") 'Lists each value from column 1 For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row Step 1 For j = 1 To ws2.Cells(1, Columns.Count).End(xlToLeft).Column + 1 Step 1 If ws2.Cells(1, j).Value = ws1.Cells(i, 1).Value Then Exit For If ws2.Cells(1, j).Value = vbNullString Then ws2.Cells(1, j).Value = ws1.Cells(i, 1).Value Exit For End If Next j Next i 'Fills columns with matching values For i = 1 To ws1.Cells(Rows.Count, 1).End(xlUp).Row Step 1 For j = 1 To ws2.Cells(1, Columns.Count).End(xlToLeft).Column Step 1 If ws2.Cells(1, j).Value = ws1.Cells(i, 1).Value Then ws2.Cells(Rows.Count, j).End(xlUp).Offset(1, 0).Value = ws1.Cells(i, 2).Value End If Next j Next i End Sub
非VBA方法:
如果您正在处理一次性问题,则处理从列到行的转换的简单方法是使用INDEX()函数。 我build议在第一个目标单元格中使用以下内容(对于要放置的“Question1”和“Question2”要放置的位置):
Question1 Destination Cell: =INDEX($A:$A,COLUMN(A1)) Answer1 Destination Cell: =INDEX($B:$B,COLUMN(A1))
从那里,只要将方程式复制到右边,直到您有多个行,因为这可以让您的列行转换无限地扩展到右侧。
**只要您的问题与解答数据在您指定的ColumnA和ColumnB中,这将会工作,但可以相应地进行修改(使用COLUMN(A1)的替代方法来定位您正在移动的行)。
而且,如果您想在上面显示的一组5列完成后堆叠问题和答案,请如下设置:
Question1 Destination Cell: =INDEX($A:$A,COLUMN(A1)) Answer1 Destination Cell: =INDEX($B:$B,COLUMN(A1)) Answer6 Destination Cell: =INDEX($B:$B,MATCH([non-locked cell address of Answer1],$B:$B,0)+5)
从那里,将这三个单元格复制到右侧5列。 然后,向下扩展,只复制以Answer6开头的那一行计算,然后粘贴到SheetA中,以覆盖ColumnA和ColumnB中的许多行。
这个方法会产生这样的结果:
Question1 Question2 Question3 Question4 Question5 Answer1 Answer2 Answer3 Answer4 Answer5 Answer6 Answer7 Answer8 Answer9 Answer10
干杯。