如何在Excel中将多列转换为以下格式的两列? 名称F1 F2 F3 约翰·a·b·d 明迪d a c 乔·c·b·e 阿兰 转换成以下格式 名称字段 约翰a 约翰·b 约翰·d 明迪d 明迪a 明迪c 乔c 乔b 乔伊 阿兰a 艾伦c
你可以用这两个公式得到你想要的。将此公式放入单元格如何在Excel中将多列转换为以下格式的两列? 名称F1 F2 F3 约翰·a·b·d 明迪d a c 乔·c·b·e 阿兰 转换成以下格式 名称字段 约翰a 约翰·b 约翰·d 明迪d 明迪a 明迪c 乔c 乔b 乔伊 阿兰a 艾伦c,excel,vba,Excel,Vba,你可以用这两个公式得到你想要的。将此公式放入单元格B8将得到第二列: 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
B8
将得到第二列:
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
此外,此公式用于获取第一列,将其放入单元格A8
,并填写两个公式:
=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)
您可以在E1中获得,然后输入:
=INDEX($A$2:$A$5,CEILING(COUNTA($B$8:B8)/COLUMNS($B$2:$D$5),1))
=INDEX(A$2:A$9999,ROUNDUP(ROW()/3,0))
然后抄下来。在F1中输入:
=INDEX($A$2:$A$5,CEILING(COUNTA($B$8:B8)/COLUMNS($B$2:$D$5),1))
=INDEX(A$2:A$9999,ROUNDUP(ROW()/3,0))
并抄写:
下面是一个尝试允许可变列数的方法 在第二语言中:- 在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)
这里有一个VBA解决方案
=INDEX($B$2:$J$10,MATCH(L2,$A$2:$A$10,0),COUNTIF($L$1:$L2,L2))
扫描第一个表中的所有行(
,从i=2到最后一行)。对于每一行,保留名称(MyName=Worksheets(“MySheet”).Cells(i,1)
)。如果单元格内容不为空,则复制到所需位置(工作表(“MyOtherSheet”)。单元格(k,1)=MyName;工作表(“MyOtherSheet”)。单元格(k,2)=工作表(“MySheet”)。单元格(i,q)
)i
、q
和k
跟踪行/列。
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