如何在Excel中按以下格式将多列转换为2列?

名称F1 F2 F3
约翰
 Mindy dac
 Joe cbe
 Alan ac
进入下面的格式

名称字段
约翰
约翰b
约翰d
 Mindy d
明迪a
 Mindy c
 Joe c
乔b
乔
艾伦
艾伦c

E1中input:

 =INDEX(A$2:A$9999,ROUNDUP(ROW()/3,0)) 

并抄下来。 在F1中input:

 =OFFSET($B$2,ROUNDUP(ROWS($1:1)/3,0)-1,MOD(ROWS($1:1)-1,3)) 

并抄下来:

在这里输入图像说明

这是一个试图允许可变数量的列。

在(说)L2: –

 =A2 

在L3

 =IF(COUNTIF(L$1:L2,L2)>=COUNTA(INDEX($B$2:$J$10,MATCH(L2,$A$2:$A$10,0),)),INDEX($A$2:$A$10,MATCH(L2,$A$2:$A$10,0)+1),L2) 

在M2中: –

 =INDEX($B$2:$J$10,MATCH(L2,$A$2:$A$10,0),COUNTIF($L$1:$L2,L2)) 

在这里输入图像说明

你可以使用这两个公式来得到你想要的。 把这个公式放入单元格B8就是得到第二列:

 =INDEX($B$2:$D$5,1+INT((ROW(A1)-1)/COLUMNS($B$2:$D$5)),MOD(ROW(A1)-1+COLUMNS($B$2:$D$5),COLUMNS($B$2:$D$5))+1) 

也是这个公式是得到第一列,把它放入单元格A8并填写两个公式:

 =INDEX($A$2:$A$5,CEILING(COUNTA($B$8:B8)/COLUMNS($B$2:$D$5),1)) 

你可以得到我的示例文件。

这是您的VBA解决scheme。

 Sub Rearrange() Set s1 = Sheets("Sheet1") Set s2 = Sheets("Sheet2") s1.Activate n = Cells(Rows.count, 1).End(xlUp).Row k = 1 For i = 1 To n namee = Cells(i, 1).Value For j = 2 To 4 numberr = Cells(i, j).Value s2.Cells(k, 1) = namee s2.Cells(k, 2) = numberr k = k + 1 Next Next End Sub