excel表里,有两列数据(竖排),如何让第二列数据根据第一列变成横排?

表达的可能不是很清楚,截图举例了。(我知道用转置粘贴可以处理,但是有几千行数据,一个个转置太麻烦了。)

举例
原内容是这样的:

想要转化成这样的形式:

想问具体有什么好的公式或办法可以处理,谢谢了!

ALT+F11打开VBE编辑器,新建个模块,粘贴如下代码:

Sub aa()
Dim flag As Boolean, rg As Range, l As Integer, m As Integer, r As Integer, i As Integer
flag = True
m = 1
r = ActiveSheet.UsedRange.Range("a65536").End(xlUp).Row
For i = 1 To r
 If Cells(i, 1) = Cells(i + 1, 1) Then
  If flag Then
   Set rg = Cells(i, 2)
   flag = False
  Else
   Set rg = Union(rg, Cells(i, 2))
  End If
 Else
  Set rg = Union(rg, Cells(i, 2))
  flag = True
  rg.Copy
  Cells(m, 4).PasteSpecial Transpose:=True
  Cells(m, 3) = Cells(i, 1)
  m = m + 1
 End If
Next
Columns("A:B").Delete
l = ActiveSheet.UsedRange.Find("*", SearchDirection:=xlPrevious).Column
Debug.Print l
For i = 3 To l * 2
 Columns(i).Insert
 i = i + 1
Next
End Sub

 点运行,即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-14

如附件,在E1中输入公式

=INDEX($B:$B,SMALL(IF($A$1:$A$14=$D1,ROW($A$1:$A$14),65536),COLUMN(A1)))&""

按组合键确认后右拖、下拉填充。

追问

请问组合键是什么?谢谢。

追答

是指同时按Shift+Ctrl+Enter三键

本回答被提问者和网友采纳
第2个回答  2019-03-29
同问题,求解答?
相似回答