Excel (一般機能)

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

 
(Windows 10全般 : Excel 2016)
違う形の表にしたい。新しい表の、セルに該当する数値を埋める関数はありますでしょうか?
投稿日時: 20/01/14 00:01:01
投稿者: おぐちゃん

上の表が元の表です。
A列・・・従業員ナンバー
B列・・・従業員の子の産まれた順番 第1子は『1』、第2子は『2』という表示です。
C列・・・子の年齢 例えば、C列4行目は、従業員NO:1001の第3子で、年齢は4歳。
 
下の表は、違う形の新しい表です。(この表に変更したいのです。)
この表のように、縦行が従業員ナンバーで、横列が子の順番という形にした場合、
元の表のC列のデータを使って、子の年齢を入れるセル【B列2行目からD列9行目】
を、関数を使って埋めることはできますでしょうか。
 
ピポットを使用するのではなく、関数を使って、対応したいのですが
そもそも、これを実現できる関数があるのかも分かりません。
 
質問文が拙く、恐縮ですが、みなさまのお力を貸してください。
どうぞよろしくお願いいたします。
 
 

	A	B	C	
1	従業員NO	子の順番	子の年齢	
2	1001	1	12	
3	1001	2	8	
4	1001	3	4	
5	1002	1	10	
6	1003	1	15	
7	1004	1	7	
8	1004	2	3	
9	1005	1	5	
10	1006	1	8	
11	1007	1	17	
12	1007	2	14	
13	1008	1	9	
14	1008	2	6	
15	1008	3	2	
				
	A	B	C	D
1		1	2	3
2	1001	12	8	4
3	1002	10		
4	1003	15		
5	1004	7	3	
6	1005	5		
7	1006	8		
8	1007	17	14	
9	1008	9	6	2

回答
投稿日時: 20/01/14 09:45:50
投稿者: んなっと

引用:
ピポットを使用するのではなく、関数を使って、対応したい

関数の勉強でしょうか。方法はいろいろあります。
  
       A     B     C D E F   G  H  I J
 1 従業員NO 子の順番 子の年齢         1  2 3
 2    1001     1    12      1001 12  8 4
 3    1001     2     8      1002 10    
 4    1001     3     4      1003 15    
 5    1002     1    10      1004  7  3  
 6    1003     1    15      1005  5    
 7    1004     1     7      1006  8    
 8    1004     2     3      1007 17 14  
 9    1005     1     5      1008  9  6 2
10    1006     1     8             
11    1007     1    17             
12    1007     2    14             
13    1008     1     9             
14    1008     2     6             
15    1008     3     2             
16                             
  
 
元データが正しく並べ替えられているなら
H2
=IF(COUNTIF($A:$A,$G2)>=H$1,INDEX($C:$C,MATCH($G2,$A:$A,0)+H$1-1),"")
右方向・→下方向・↓
  
並べ替えられていないなら
=IFERROR(INDEX($C:$C,MATCH($G2&"|"&H$1,INDEX($A$1:$A$500&"|"&$B$1:$B$500,),0)),"")
 
※死亡に伴う享年(ごめんなさい...)を使わない条件であれば
=IFERROR(AGGREGATE(14,6,$C$2:$C$500/($A$2:$A$500=$G2),H$1),"")
※下の式は0歳児に対応できないのでダメ。
=IFERROR(TEXT(SUMIFS($C:$C,$A:$A,$G2,$B:$B,H$1),"0;;")*1,"")

回答
投稿日時: 20/01/14 12:41:57
投稿者: んなっと

作業列を使う場合
 
       A     B     C    D E F   G  H  I J
 1 従業員NO 子の順番 子の年齢 作業列        1  2 3
 2    1001     1    12 1001|1    1001 12  8 4
 3    1001     2     8 1001|2    1002 10    
 4    1001     3     4 1001|3    1003 15    
 5    1002     1    10 1002|1    1004  7  3  
 6    1003     1    15 1003|1    1005  5    
 7    1004     1     7 1004|1    1006  8    
 8    1004     2     3 1004|2    1007 17 14  
 9    1005     1     5 1005|1    1008  9  6 2
10    1006     1     8 1006|1            
11    1007     1    17 1007|1            
12    1007     2    14 1007|2            
13    1008     1     9 1008|1            
14    1008     2     6 1008|2            
15    1008     3     2 1008|3            
 
D2
=A2&"|"&B2
下方向・↓
H2
=IFERROR(INDEX($C:$C,MATCH($G2&"|"&H$1,$D:$D,0)),"")
右方向・→下方向・↓

回答
投稿日時: 20/01/14 18:03:53
投稿者: Mike

Sheet1              Sheet2
   A    B    C       A  B C D
1 従業員NO 子の順番 子の年齢   1    1 2 3
2   1001    1    12   2 1001 12 8 4
3   1001    2    8   3 1002 10
4   1001    3    4   4 1003 15
5   1002    1    10   5 1004 7 3
6   1003    1    15   6 1005 5
7   1004    1    7   7 1006 8
8   1004    2    3   8 1007 17 14
9   1005    1    5   9 1008 9 6 2
10   1006    1    8
11   1007    1    17
12   1007    2    14
13   1008    1    9
14   1008    2    6
15   1008    3    2
 
Sheet1 において、
1.範囲 A1:C15 選択 ⇒ Alt+MC →“上端行”のみにチェック入れ ⇒ [OK]
2.セル B2 に次の[条件付き書式]を設定
   ルールの種類: “指定の値を…を書式設定”
   ルールの内容↓
        次のセルのみを書式設定↓
     セルの値  次の値に等しい  =0
    書式→白のフォント色
3.式 =SUMPRODUCT((従業員NO=$A2)*(子の順番=B$1)*子の年齢) を入力した
  セル B12 を右に2列、下に7行オートフィル

投稿日時: 20/01/16 23:06:50
投稿者: おぐちゃん

お礼が遅くなり、大変失礼しました。
力をお貸しくださったお二人の方、誠にありがとうございました。
一つずつ試して学習します。
仕事で使いたくて、質問しましたので、助かりました。