- 締切済み
エクセルについての質問です。
エクセルについての質問です。 下記のような表があります。 名前 NO 時間 NO 時間 名前 時間 山田 A 10 A 40 山田 10 B 20 鈴木 30 鈴木 A 30 B 60 山田 20 B 10 鈴木 10 C 20 井上 30 井上 B 30 C 20 鈴木 20 左の表から右の表を作成するのに分かりやすい関数がありますでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yosifuji2002
- ベストアンサー率51% (969/1888)
左の表のデータを全部コピーして、別なシートの貼り付けます。 その貼り付け後のデータで、Noをキーにして昇順にソートします。 ソートしたデータをコピーして元のシートの二義側のデーたのその又右側の余白に貼り付けます。 ここ前はマクロで自動的にできます。 そして、右側の表の時間の集計地のところに下記の式を入れます。 =IF(J3<>J2,SUM(L3:$L8)-SUM(K4:K$10),0) ここでJは名前の列、 Lは元の時間の列 Kはこの式を入れる列 を意味します。 この式の意味は、名前が上の行と違うときには、自分の行から最終行までの時間の合計から、自分の列の自分の次の行から最終行までの合計を引くという意味です。 また名前が上の行と同じときには ゼロとします。 これが、キー(この場合名前)が変わったときに合計値を計算する定石の式です。 又名前とABC等の区分は全部の行にいれブランクとしないで下さい。これもデータ作成の定石です。
- kagakusuki
- ベストアンサー率51% (2610/5101)
解り易いとは言いかねますが宜しいでしょうか。 今仮に、左側の表の山田と表示されているセルがSheet1のA2セルで、右側の表はSheet2に作成するものとします。 又、Sheet3のA列とB列を作業列として使用するものとします。 まず、Sheet3のA2セルに次の数式を入力して下さい。 =IF(Sheet1!$B2="","",Sheet1!$B2&COUNTIF(Sheet1!$B$1:$B2,Sheet1!$B2)) 次に、Sheet3のB2セルに次の数式を入力して下さい。 =IF($A2="","",IF(Sheet1!$A2="",B1,Sheet1!$A2)) 次に、Sheet3のA2~B2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。 次に、Sheet2の A1セルに「NO」、 B1セルに「時間」、 C1セルに「名前」、 D1セルに「時間」、 A2セルに「A」 と入力して下さい。 次に、Sheet2のA3セルに次の数式を入力して下さい。 =IF(ROWS($2:2)=COUNTIF(Sheet1!$B:$B,"A"),"B",IF(ROWS($2:2)=COUNTIF(Sheet1!$B:$B,"A")+COUNTIF(Sheet1!$B:$B,"B"),"C","")) そして、Sheet2のA3セルをコピーして、A4以下に貼り付けて下さい。 次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF($A2="","",SUMIF(Sheet1!$B:$B,$A2,Sheet1!$C:$C)) 次に、Sheet2のC2セルに次の数式を入力して下さい。 =IF(ROWS($1:2)>COUNTIF(Sheet1!$B:$B,"><"),"",VLOOKUP(MID("ABC",COUNT($B$1:$B2),1)&ROW(C3)-MATCH(MID("ABC",COUNT($B$1:$B2),1),$A:$A,0),Sheet3!$A:$B,0))) 次に、Sheet2のD2セルに次の数式を入力して下さい。 =IF(ROWS($1:2)>COUNTIF(Sheet1!$B:$B,"><"),"",INDEX(Sheet1!$C:$C,MATCH(MID("ABC",COUNT($B$1:$B2),1)&ROW(D3)-MATCH(MID("ABC",COUNT($B$1:$B2),1),$A:$A,0),Sheet3!$A:$A,0)))) 次に、Sheet2のB2~D2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。 以上で完成です。
お礼
ご回答誠にありがとうございます。 なんとか作ってみたのですが数式の意味の理解も困難ですし 結局は出来ませんでした。 勉強不足です。 思っていたいた以上に難しかったようです。 ありがとうございました。
お礼
丁寧な回答ありがとうございます。 しかし私には正直意味が理解できず表が完成できませんでした。 思っていた以上に難しかったです。 せっかくご回答いただけたのに申し訳ありませんでした。 もう少し勉強したいと思います。