• 締切済み

Excelで3つのシートを一つにまとめる方法

お世話になります。よろしくお願いします。 学校で成績表をつけるときに、一覧表も作るのですが、これを一つのシートにまとめたいのです。 成績表は学期ごとに作るので、3枚できます。形式は同じです。文で書くと分かりにくいかもしれませんが、例えばB2セルに出席番号1番の子の名前を入れると、C2セルには2番の子・・・というふうに、横の列には氏名が入ります。縦の列には、各教科の観点が入ります。例えばA3セルに国語の読む力、A4セルには国語の書く力・・・などと入れていきます。これが1学期分、2学期分、3学期分と3枚できるわけです。 これを1枚の別のシートにまとめたいのです。例えばB2、C2、D2セルを結合して氏名を入れ、その下のB3セルには1学期の成績、C3セルには2学期の成績、D3セルには3学期の成績が、元になっているシートから飛んでくるようにしたいのです。 分かりにくい説明で、申し訳ありませんが、簡単にできる方法を思いつかれた方は、教えていただけないでしょうか? よろしくお願いします。

みんなの回答

  • mar00
  • ベストアンサー率36% (158/430)
回答No.5

マクロを使った方法になりますが まとめるシート名の上で右クリック→コードの表示を選択して貼り付けてください。 Sub Macro1() Set ws01 = Sheets("一覧表") 'ここを変更 ws01.Select Application.ScreenUpdating = False If Range("B2") <> "" Then Range(Cells(1, 2), Cells(1, Cells(2, Columns.Count).End(xlToLeft).Column + 2)).EntireColumn.Delete End If myCol = -1 For i = 1 To 3 myRow = Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To Sheets(i).Cells(2, Columns.Count).End(xlToLeft).Column myCol = myCol + 3 myName = Sheets(i).Cells(2, j) On Error GoTo Line1 Cells.Find(What:=myName).Activate Cells(3, ActiveCell.Column + i - 1).PasteSpecial Paste:=xlPasteValues GoTo Line2 Line1: lastCol = Cells(2, Columns.Count).End(xlToLeft).Offset(, 1).Column Cells(2, lastCol) = myName Range(Cells(2, lastCol), Cells(2, lastCol + 2)).Merge Sheets(i).Select Range(Cells(3, j), Cells(myRow, j)).Copy ws01.Select Cells.Find(What:=myName).Activate Resume Next Line2: Next j myCol = -1 + i Next i Application.CutCopyMode = False Range("A1").Select Application.ScreenUpdating = True End Subまとめるシートは一覧表というシート名にしていますので適宜変更して下さい。 2学期、3学期で人が増えた場合は一番最後に作成されますので移動などして 正しい位置に変更する必要があります。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

仮にシート1が1学期の、シート2が2学期の、シート3が3学期のシートとしてシート4にまとめの表を作るとします。 シート1から3までのシートではB2せるから横方向に氏名が、A3セルから下方には国語の読むなどの項目名が入力されているとします。 そこでシート4ですがB2セルには次の式を入力して右横方向にオートフィルドラッグコピーします。 =IF(MOD(COLUMN(A1),3)<>1,"",IF(INDEX(Sheet1!$2:$2,ROUNDUP(COLUMN(A1)/3,0)+1)=0,"",INDEX(Sheet1!$2:$2,ROUNDUP(COLUMN(A1)/3,0)+1))) A3セルには次の式を入力して下方にオートフィルドラッグコピーします。 =Sheet1!A3 B3セルには次の式を入力して右横方向にオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。 =IF(OR($A3="",COLUMN(A1)>COUNTA(Sheet1!$2:$2)*3),"",IF(MOD(COLUMN(A1),3)=1,INDEX(Sheet1!$A:$XX,ROW(A3),MATCH(INDEX($A:$XX,2,INT((COLUMN(A1)-1)/3)*3+2),Sheet1!$2:$2,0)),IF(MOD(COLUMN(A1),3)=2,INDEX(Sheet2!$A:$XX,ROW(A3),MATCH(INDEX($A:$XX,2,INT((COLUMN(A1)-1)/3)*3+2),Sheet2!$2:$2,0)),IF(MOD(COLUMN(A1),3)=0,INDEX(Sheet3!$A:$XX,ROW(A3),MATCH(INDEX($A:$XX,2,INT((COLUMN(A1)-1)/3)*3+2),Sheet3!$2:$2,0)),""))))

すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

A列の縦の項目はA3以下,今のまま変えなくていいです。 横の項目について, 1学期シートのB2セルに「出席番号1番の1学期」と記入します 2学期シートのB2セルには「出席番号1番の2学期」と記入します 3学期シートのB2セルには「出席番号1番の3学期」と記入します 同様に 1学期シートのC2セルに「出席番号2番の1学期」と記入します 2学期シートのC2セルには「出席番号2番の2学期」と記入します 3学期シートのC2セルには「出席番号2番の3学期」と記入します もちろん言わずもがなですが,「出席番号1番の」とはその子の名前なりナンなり,今のアナタのB2やC2に記入してあるとおりの内容という意味ですよ? 新しい空白の「まとめ」シートを用意 ご利用のエクセルのバージョンが不明ですが,データタブ(データタブ)の「統合」を開始 各学期シートのA2からの表範囲をそれぞれ「追加」し,OKすると,3シートの表が一斉にひとつにまとまります。

すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.2

1学期、2学期、3学期という3枚のシートに、正確な文字で、これらのシートの名前を付けて下さい。 次に、 まとめ という名前の別のシートをそのエクセルファイルに追加して、以下の操作を行って下さい。 B2セルに、=1学期!B2 と記入して下さい。 E2セルに、=1学期!C2 と記入して下さい。 H2セルに、=1学期!D2 と記入して下さい。 A3セルに、=1学期!A3 と記入して、A4セルまでドラッグコピーして下さい。 B3セルに、=1学期!B3 と記入して、D4セルまでドラッグコピーして下さい。 E3セルに、=2学期!B3 と記入して、G4セルまでドラッグコピーして下さい。 H3セルに、=3学期!B3 と記入して、J4セルまでドラッグコピーして下さい。 成功したら、ドラッグコピーを下に増やしてください。

すると、全ての回答が全文表示されます。
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

>簡単にできる方法 その通りの表であれば、一発でする方法はないと思います。 1度作成してしまえば、次年度からは名前の入替えのみで行えると思われるので、地道にリンク貼るのがいいと思います。 その通りの表ではない代替案ですが、「統合」を使う方法で、 1.作成したいシートをアクティブにして、データ→統合を選びます。 2.統合元範囲欄の横の赤ボタンから、1学期のシートの表全体を範囲選択し、 上端行、左端列、統合元とリンクするの全てにチェックします。 3.追加ボタンを押します。 4.同様に2学期、3学期も1~3を繰り返し、OKします。 すると表が完成します。 横の+をボタンを押せば、1学期~3学期の成績も見れます。

すると、全ての回答が全文表示されます。

関連するQ&A