excel 列转行

比如:
A a
A b
A c
B d
B e
C f
C g
C h
C i
转成
A a b c
B d e
C f g h i
我原先用复制—〉选择性粘贴 “转置”的方法,但是数据量太大,想请教一下各位高手有没有更快的方法。
p.s. 学习excel中,如果用到函数或代码,请各位解释一下具体的含义。Thanks a lot!

数据在A列和B列

在D2输入公式
=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$20000&"",$A$2:$A$20000&"",0)=ROW($A$2:$A$20000)-1,ROW($A$2:$A$20000),4^8),ROW(A1)))&""

数组公式,按CTRL+SHIFT+回车三键确定输入,鼠标移到单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往下拖动

然后在E1输入公式
=INDEX($B:$B,SMALL(IF($A$2:$A$20000=$D2,ROW($A$2:$A$20000),4^8),COLUMN(A1)))&""
数组公式,按CTRL+SHIFT+回车三键确定输入,鼠标移到单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往右拖动,再往下拖动

就会得出你想要的效果
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-09
从【工具】菜单打开宏编辑器,粘贴下列代码并运行,在sheet2中就可以看见你想要的结果。
Sub abc()
Dim i As Long, j As Integer, k As Integer
Dim rows As Long, d1 As String
Sheets(1).Select
rows = ActiveSheet.UsedRange.rows.Count
i = i + 1
While i < rows
d1 = Cells(i, 1).Value
j = j + 1
k = 1
Sheets(2).Cells(j, k).Value = d1
While Cells(i, 1).Value = d1
k = k + 1
Sheets(2).Cells(j, k).Value = Cells(i, 2).Value
i = i + 1
Wend
Wend
End Sub本回答被提问者采纳
第2个回答  2009-04-09
有的~

1:如果上面的两列是AB 两列,那么先提取出A B C这样的项目
在C1输入
=IF(SUM(1/COUNTIF($A$1:$A$100,$A$1:$A$100))>=ROW(A1),INDEX($A$1:$A$100,SMALL(IF(ROW($A$1:$A$100)=MATCH($A$1:$A$100,$A$1:$A$100,0),ROW($A$1:$A$100),"0"),ROW(A1))),"END") 公式用CTRL+SHIFT+ENTER结束

公式当中的$A$1:$A$100 这个“100”一定要是准确的最后一个单元格

2:D1输入
=IF(COLUMN(A1)<=COUNTIF($A:$A,$C1),OFFSET($A$1,MATCH($C1,$A$1:$A$100,0)-2+COLUMN(A1),1),"")
公式往下往右拉就行了
第3个回答  2009-04-09
没有了。。。
相似回答