我有这样的事情:
onPause()
我希望此列转置为如下行:
hello
hi
how
are
you
hello
how
are
you
hello
hi
hi
hi
hello
hi
how
how
are
hello
you
我如何实现这一目标?
答案 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()