Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2019)
複数行を一行で表したい
投稿日時: 22/10/01 19:43:08
投稿者: もちパンダ

現在このようなデータがあります。
親に子が複数いると、複数行が表示されています。
 

親宛名番号	親氏名	住所	        子宛名番号	子氏名
1001	    親1	東京都千代田区〇〇	2001	    親1の第一子
1002	    親2	東京都荒川区〇〇	2002	    親2の第一子
1002	    親2	東京都荒川区〇〇	2003	    親2の第二子
1003	    親3	東京都北区〇〇	    2004	    親3の第一子
1003	    親3	東京都北区〇〇	    2005	    親3の第二子
1003	    親3	東京都北区〇〇	    2006	    親3の第三子

 
このデータを親をキーにして、下記のように一行のデータに並べ替えしたいと考えています。
子は最大で第九子までいます。
 
1001  親1	東京都千代田区〇〇 2001 親1の第一子
1002	親2	東京都荒川区〇〇  2002 親2の第一子  2003	親2の第二子
1003	親3	東京都北区〇〇	  2004 親3の第一子  2005	親3の第二子 2006 親3の第三子

 
vlookup関数など考えましたが、第二子以降のデータをどのように列にすればいいか悩んでいます。
また、関数ではなく、VBAでもプログラムを組んでみましたが、うまくできないところです。
どうぞよろしくお願いいたします。

回答
投稿日時: 22/10/02 08:28:20
投稿者: んなっと

●Sheet1
  
    A    B          C    D       E
1 親番号 親氏名        住所 子番号    子氏名
2  1001  親1 東京都千代田区〇〇  2001 親1の第一子
3  1002  親2  東京都荒川区〇〇  2002 親2の第一子
4  1002  親2  東京都荒川区〇〇  2003 親2の第二子
5  1003  親3   東京都北区〇〇  2004 親3の第一子
6  1003  親3   東京都北区〇〇  2005 親3の第二子
7  1003  親3   東京都北区〇〇  2006 親3の第三子
  
●Sheet2
  
    A    B   C    D    E F G H I
1 親番号 親氏名 住所 子番号 子氏名 2 2 3 3
  
としてから
  
  
A2
=IFERROR(INDEX(Sheet1!A:A,AGGREGATE(15,6,ROW($2:$500)/(MATCH(Sheet1!A$2:A$500,Sheet1!A:A,0)=ROW($2:$500)),ROW(A1))),"")
下方向・↓
B2
=IF($A2="","",VLOOKUP($A2,Sheet1!$A:$E,COLUMN(B2),FALSE))
右方向・→下方向・↓
F2
=IF($A2="","",IF(COUNTIF(Sheet1!$A:$A,$A2)<F$1,"",INDEX(Sheet1!$D:$D,MATCH($A2,Sheet1!$A:$A,0)+F$1-1)))
下方向・↓
G2
=IF($A2="","",IF(COUNTIF(Sheet1!$A:$A,$A2)<G$1,"",INDEX(Sheet1!$E:$E,MATCH($A2,Sheet1!$A:$A,0)+G$1-1)))
下方向・↓
F2:G列下 を選択して右方向・→
  
    A    B          C    D       E   F       G   H 
1 親番号 親氏名        住所 子番号    子氏名   2       2   3 
2  1001  親1 東京都千代田区〇〇  2001 親1の第一子              
3  1002  親2  東京都荒川区〇〇  2002 親2の第一子 2003 親2の第二子    
4  1003  親3   東京都北区〇〇  2004 親3の第一子 2005 親3の第二子 2006 

投稿日時: 22/10/02 13:01:52
投稿者: もちパンダ

んなっと様
 
ありがとうございます!無事できました。
先頭行のF列以降は数字にして、COUNTIF関数を使って第二子がいるかを確認し、
いる場合はINDEX関数とMATCH関数を組み合わせて第二子以降のデータを抽出すればよいのですね。
勉強になりました。どうもありがとうございました。