• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL2010マクロSeetの結合)

EXCEL2010マクロSeetの結合

このQ&Aのポイント
  • EXCEL2010のマクロを使用して、複数のSeetを一つのSheetに結合する方法を教えてください。
  • Seet内の氏名と試験結果の点数をまとめた一つのSheetを作成したいです。
  • マクロの中で列の最大値を取得して、別のSheetにコピーするところでエラーが発生しています。どのように修正すれば良いでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

だから。 >3番目は、A列B列は、コピーしてもしなくても構いません しなくていいなら、いったい何をコピー「したい」のですか。目に見える結果としてどうなってほしいのか、きちんと情報提供してくださいということです。 ヤリタイ事: 1.一番後ろに一枚シートを追加したい 2.使っていないSheet1,2,3はスキップして、4枚目の国語以降のシートについて 3.B列の得点が60以上の生徒をコピーしたい 4.最後のシートに「下向けに」貼り付けていきたい。  国語が60点以上の子が10人いたらまず10行  算数が20人いたら次の20行に sub macro2()  dim i as long  dim n as long  worksheets.add after:=worksheets(worksheets.count)  range("A1:B1") = array("名前","得点")  for i=4 to worksheets.count - 1   worksheets(i).autofiltermode = false   worksheets(i).range("A:B").autofilter field:=2, criteria1:=">=60"   worksheets(i).autofilter.range.offset(1).copy range("A65536").end(xlup).offset(1)   worksheets(i).autofiltermode = false next i end sub それで。 >すると、最後にSHeetZには、国語、算数、理科が全て60点以上の人が名人いるかが判ります。 >また、同様に国語、算数だけが60点以上の人も探す事も出来ます。 マクロでできないかなーと考える「その前に」、まず手作業で「こういう結果が欲しいんだ」と一回実際にあなたの自分の手を動かし使って結果を作成してみると、何をどうしたらそういうのが作成できるか結構イメージがつかめます。 同時に、今考えていることでは「うまくいかないみたいだなぁ」ってのも見えてきて、二度手間三度手間を無くすことができます。

19560816
質問者

お礼

本当に有難う御座います。keithin様がおしゃる通り、自分てを動かして、 >マクロでできないかなーと考える「その前に」、まず手作業で「こういう結果が欲しいんだ」と一回実>際にあなたの自分の手を動かし使って結果を作成してみると、何をどうしたらそういうのが作成で>きるか結構イメージがつかめます。 >同時に、今考えていることでは「うまくいかないみたいだなぁ」ってのも見えてきて、二度手間三度>手間を無くすことができます。 実際に手を動かしてイメージを作って再度投稿させて頂きたく宜しくご指導の程宜しくお願い致します。ヤリタイ事:であっております。これを参考にさせて頂いて、実際にマクロを動かしてみます。 本当に有難う御座います。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

あなたの言いたかったこと、ヤリタカッタ事はこういう事ですか? 状況説明: ブックにはSheet1、Sheet2、Sheet3があるけどその3枚のシートは使っていない その後ろに「国語」「算数」「理科」などなどのシートを追加して使っている 各科目のシートには A1に氏名 B1に点数 と記入してあり、A列とB列の2列を使っている A2:B2以下、つまり2行目以下に下向けに生徒の記録を列記している ヤリタイ事: 1.一番後ろに一枚シートを追加したい 2.使っていないSheet1,2,3はスキップして、4枚目の国語以降のシートについて 3.A:B列の使っているセル範囲をコピーしたい 4.最後のシートに「横向けに」貼り付けていきたい。  国語のシートからはA:B列に  算数のシートからはC:D列に  理科のシートからはE:F列に  のように。 手順: ALT+F11を押してVBE画面を出す 挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim i as long  dim n as long  worksheets.add after:=worksheets(worksheets.count)  for i = 4 to worksheets.count - 1   n = worksheets(i).range("A65536").end(xlup).row   worksheets(i).range("A1:B" & n).copy range("IV1").end(xltoleft).offset(0, 1)   range("IV1").end(xltoleft) = worksheets(i).name  next i  range("A:A").delete shift:=xlshifttoleft end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押し、今登録したマクロを実行する。 あなたのやりたかったのと違う結果になったときは、説明の「状況説明」をよく読んで、ご自分の言いたかった事やりたかった事と「ここが違っている」をキチンと「目に見えるエクセルの姿」で説明してください。

19560816
質問者

補足

早々のご回答有難う御座います。keithinのおっやる通り、ヤリタイ事の1、2までは、あっております。 しかし、3番目は、A列B列は、コピーしてもしなくても構いません。しかし、4、の所で困っておりまして、ピポットテーブルとは違い、最後の新しいSHeet(ここでは仮にSHeetZと呼びます)に国語のSheet(60点以上の人の氏名などを)からn行をコピーして、次に算数のSheetからA列からm行を先ほどのSHeetZにコピーしたいのですが、SHeetZには、国語の60点以上の人の成績が埋まっているので、今度は、算数で60点以上の人の成績をn+1行目からコピーしていきます。今度は理科で60点以上の人をSHeetZに国語が60点以上人と算数が60点点以上の人の後の行にコピーします。すると、最後にSHeetZには、国語、算数、理科が全て60点以上の人が名人いるかが判ります。また、同様に国語、算数だけが60点以上の人も探す事も出来ます。しかも、体育、社会、とSheetも増やすことが出来る事が、私のやりたかった事です。状況説明が足りず大変申しわけありませんでした

関連するQ&A

専門家に質問してみよう