在excel中如何将一整“列”转换为一“行”(最好用宏)

所以事情是很麻烦的其实,比如我选中的是 Range("A:A").Select 一定是这一整列
需要复制到的地方是B1
然而
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
是不能被允许的
所以转置 是解决不了的-----------------------------加分啦!
那么我说的再清楚一点因为要对不同的excel操作,所以列的数据不同,数据的个数也不是同的。这是就要做一个宏来解决大量的重复操作问题,那就是将第一列转化为第一行。比如说我第一张excel表的第一列有20条数据,第二张excel表的第一列有200条数据额,怎么办?如何写一个通用的宏呢?

可以用函数"=OFFSET($A$1,A12-1,0,1,1)"来解决,比如A1-A9列分别填入101,102,103...109,

第12行为辅助列:A12单元格填写1,B12填写2,依次类推。

第13行为转置后的列:A13单元格填写"=OFFSET($A$1,A12-1,0,1,1)",拖动公式至i13.

转置完成。如下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-26

一整列转换外一行,严格上说是不可能的,因为行数远小于列数。

如果在列为填充满的情况下,可以做到。可使用如下代码分别选中原单元格和目标位置。

Sub Trans_Copy()
Dim myRange1, myRange2 As Range
Set myRange1 = Application.InputBox("选择变换区域", Type:=8)
Set myRange2 = Application.InputBox("选择放置区域", Type:=8)
If myRange1.Count >= 16385 - myRange2.Row Then
MsgBox "单元格过多,无法复制"
Exit Sub
End If
myRange1.Copy
myRange2.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
End Sub

第2个回答  2011-11-16
可先选中需要交换的数据单元格区域,执行“复制”操作。
  然后选中能粘贴下数据的空白区域的左上角第一个单元格,执行“编辑、选择性粘贴”命令在打开的“选择性粘贴”对话框中选中“转置”选项后,确定、返回即可。追问

所以事情是很麻烦的其实,比如我选中的是 Range("A:A").Select 一定是这一整列
需要复制到的地方是B1
然而
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
是不能被允许的
所以转置 是解决不了的

第3个回答  2011-11-16
sub sss() '此例假设A列有数据,如果是C列,则可将第三行改为cells(1,i+1)=cells(i,3),依此类推。
for i=1 to 254 '因为excel 只有255列
cells(1,i+1)=cells(i,1)
next
end sub
第4个回答  2011-11-16
完全不用那么麻烦,标记需要转换的一列,复制, 去到想要转换成行的地方,右键,选择性粘贴,勾选转置,确认,OK。追问

因为是一整列 所以它不会让你复制的

相似回答