如何将列转换为行?

时间:2016-08-28 17:41:38

标签: excel transpose

我有这样的事情:

onPause()

我希望此列转置为如下行:

hello
hi
how 
are 
you
hello
how
are
you
hello
hi
hi
hi
hello
hi
how
how 
are
hello
you

我如何实现这一目标?

4 个答案:

答案 0 :(得分:2)

如果你想用VBA方式解决这个问题,那么你可能需要考虑使用这段代码:

Option Explicit

Public Sub tmpSO()

Dim i As Long
Dim LastRow As Long
Dim wsSource As Worksheet
Dim wsDestination As Worksheet
Dim DestinationRow As Long, DestinationColumn As Long

Set wsSource = ThisWorkbook.Worksheets("SourceSheetName")
Set wsDestination = ThisWorkbook.Worksheets.Add(Before:=wsSource)

LastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row

DestinationRow = 1
DestinationColumn = 1
For i = 1 To LastRow
    If LCase(Trim(wsSource.Cells(i, 1).Value2)) = "hello" Then
        DestinationColumn = 1
        DestinationRow = DestinationRow + 1
    Else
        DestinationColumn = DestinationColumn + 1
    End If
    wsDestination.Cells(DestinationRow, DestinationColumn).Value2 = wsSource.Cells(i, 1).Value2
Next i

End Sub

显然,您必须在上面的代码SourceSheetName中更改数据所在的工作表的实际名称。除此之外,代码应该工作并执行您希望它执行的操作。

答案 1 :(得分:1)

1)选择数据。 2)复制(Ctrl-c) 3)选择要粘贴转置数据的单元格。 4)粘贴特殊(在编辑菜单下或工具栏的左侧)并选择粘贴TRANSPOSE。

答案 2 :(得分:0)

一种方式(可能不是最好的!)将使用hello终止您的列表,假设您的第一个hello在A2中,在B2中:

=IF(AND($A2="hello",COLUMN()<MATCH("hello",$A3:$A77809,0)+1),OFFSET($A2,COLUMN()-1,,),"")   

向上和向下拖动,直到至少一列完全空白。然后选择all,Copy,Paste Special ...,Values并删除ColumnB中为空的行。最后,如果需要,逐行连接片段(单元格),每个单元格之间有空格,重复粘贴/特殊并删除剩余。

答案 3 :(得分:0)

对于78,000多行,使用VBA数组和集合对象的以下VBA例程应该比在工作表上直接执行“工作”时运行得相当快,而且速度更快。

stopSelf()