如何使用以下格式将多列转换为Excel中的2列?

时间:2016-11-19 11:28:33

标签: excel excel-vba vba

Name    F1  F2  F3
John    a   b   d
Mindy   d   a   c
Joe     c   b   e
Alan    a   c   

Into The below Format

Name    Fields
John    a
John    b
John    d
Mindy   d
Mindy   a
Mindy   c
Joe     c
Joe     b
Joe     e
Alan    a
Alan    c

4 个答案:

答案 0 :(得分:1)

E1 中输入:

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

并复制下来。在 F1 中输入:

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

并复制下来:

enter image description here

答案 1 :(得分:1)

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

在(比方说)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))

enter image description here

答案 2 :(得分:0)

您可以根据需要使用这两个公式。将此公式放入单元格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))

您可以获得my example file.

答案 3 :(得分:0)

这是适合您的VBA解决方案。

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