2016-11-19 1 views
1
 
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 
+0

最初のテーブルのすべての行をスキャンします( 'i = 2からLastRow'まで)。各行の保守名( 'MyName = Worksheets(" MySheet ")、セル(i、1)')。セルの内容がヌルでない場合は、ワークシート( "MyOtherSheet")、セル(k、1)= MyName、ワークシート( "MyOtherSheet")、セル(k、2)=ワークシート( "MySheet")。セル(i、q) ')。 'i'、' q'、 'k'は行/列を追跡します。 – CMArg

答えて

0

これらの2つの式を使用して、目的に応じて使用することができます。セルB8にこの式を入れて第2の列を取得することです:

=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.を得ることができます

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です。 M2で

=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) 

: - - :L2(例えば)で

ここ

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

enter image description here

+0

.......ニース!......... –

+0

...........ありがとうございました!........ –

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 
関連する問題