Excel VBAで複数シートを1シートにまとめる方法

このQ&Aのポイント
  • Excel VBAを使用して、複数のシートを1つのシートにまとめる方法について教えてください。
  • 具体的には、[集計]シートに[集計開始]ボタンを設置し、個人別のシートを読み込んで、データを集計して表示する方法を知りたいです。
  • VBAの初心者ですので、分かりやすく説明していただけると助かります。よろしくお願いします!
回答を見る
  • ベストアンサー

EXCEL VBA 複数シートを1シートまとめる

お世話になります。 面談.xlsというブックがあります。 このブックの中には一番左に[集計]というシートがあり、右隣から[個人別面談 田中],[個人別面談 山本],[個人別面談 高橋],という個人別のシートが複数あります。(可変です) やりたいこと (1)[集計]シートに[集計開始]というボタンを設置してクリック (2)右隣の[個人別面談 田中]シートを読み込む (3)[集計]シートのB1に[個人別面談 田中]のA1を挿入 [集計]シートのB2に[個人別面談 田中]のB1を挿入 [集計]シートのB3に[個人別面談 田中]のC1を挿入 (4)次の[個人別面談 山本]シートを読み込む (5)[集計]シートのC1に[個人別面談 山本]のA1を挿入 [集計]シートのC2に[個人別面談 山本]のB1を挿入 [集計]シートのC3に[個人別面談 山本]のC1を挿入 (6)次の[個人別面談 高橋]シートを読み込む (7)[集計]シートのD1に[個人別面談 高橋]のA1を挿入 [集計]シートのD2に[個人別面談 高橋]のB1を挿入 [集計]シートのD3に[個人別面談 高橋]のC1を挿入 (8)完了! ※[集計開始]ボタンをクリックすると[集計]シートB1~D3の値は毎回クリアする仕様にしたいです 環境 Excel2013 会社でこのような仕組みをVBAで作れと言われましたが当方初心者で困っています。 どなたかお知恵をお借りできませんでしょうか? よろしくお願い致します。

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 説明通りの状態なら、フォームボタンに下記マクロを登録して試して下さい。 Sub test()   Dim i As Long   With ThisWorkbook.Worksheets     For i = 2 To .Count       .Item(1).Cells(1, i) = .Item(i).Cells(1, 1)       .Item(1).Cells(2, i) = .Item(i).Cells(1, 2)       .Item(1).Cells(3, i) = .Item(i).Cells(1, 3)     Next   End With End Sub

yakkun2338
質問者

お礼

ushi2015さん、ご連絡ありがとうございました! (当方からのご連絡が遅くなりまして申し訳ありません) ご教授いただきました方法で実現できました! 完璧に実現できました。 本日提出すつことができました。 本当に助かりました! この度は本当にありがとうございました!

その他の回答 (2)

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

ブックを用意する ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim c as long  worksheets("集計").range("B1:IV3").clearcontents  for c = 2 to worksheets.count   worksheets("集計").range("A1:A3").offset(0, c - 1).value = application.transpose(worksheets(c).range("A1:C1").value)  next c end sub ファイルメニューから終了してエクセルに戻る 集計シートにオートシェイプの図形やテキストボックスでボタン絵柄を作成する 右クリックしてマクロの登録を開始,macro1を登録して完成。 #ホントの情報提供がメンドクサくて,てきとーに相談内容を書いて教われば自力で応用できると考えたご相談ですね。頑張ってしっかり作成してください。

yakkun2338
質問者

お礼

keithinさん、ご連絡ありがとうございました! (当方からのご連絡が遅くなりまして申し訳ありません) いつもありがとうございます。 ご教授いただきました方法で実現できました! 完璧に実現できました。 まったくもってご指摘通りです。 ただ情報提供がメンドクサくいわけではなく、なるべく簡単にお伝えするために質問を簡単にしようと思いました・・。 ご気分を悪くされたのならお詫び申し上げます。 この度は本当にありがとうございました!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問の文章はよく書けていると思う。 しかし、課題丸投げですな。ここはVBAコード要求の丸投げをする場所でないと思う。 上司に、質問コーナーで教えてもらって作れた、と伝えないと、今後質問者への要求が拡大して、質問者が窮地に陥るかも。 ーー 標準モジュールに下記をコピペ Sub test01() Set shu = Worksheets("集計") c = 2 '集計シートは最初B列から書き出し '-前シートの繰り返し処理 For Each sh In Worksheets If sh.Name <> "集計" Then '集計シートは例外除外 MsgBox sh.Name '--処理ーー shu.Cells(c, 1) = sh.Range("A1") shu.Cells(c, 2) = sh.Range("B1") shu.Cells(c, 3) = sh.Range("C1") c = c + 1 '次シートは次の右列へ '--- End If Next '-- End Sub 実行して質問者の仕様とOKならば、シートにコマンドボタンを作り、そのクリックイベント部にTest01を書けばよい。 ーー テストデータ Sheet2 A1:C1 a  b  c Sheet3 A1:C1 d   e   f Sheet4 A1:C1 g  h i 「集計」シート A2:c4 a  b  c d  e  f g  h  i 急いで作ったので、代入の辺のコードのセルが誤っておれば上記のコードを修正してください。

yakkun2338
質問者

お礼

imogasiさん、ご連絡ありがとうございました! (当方からのご連絡が遅くなりまして申し訳ありません) ご教授いただきました方法で実現できました! 完璧に実現できました。 本当にいつも丸投げしてしまっています。。 上司には全部WEBで教えてもらってる、と言ってあります。 そのれを承知で依頼してくるので、自分でもいけないな、と思っていますが要求が立て続けにくるので。。。 詳しいコードのご紹介ありがとうございました。 完璧に実現できました。 この度は本当にありがとうございました!

関連するQ&A

  • エクセル 複数シートにまたがるデータの抽出

    複数シートからのデータ抽出についていくつか拝見いたしましたが 知識が足らず、操作できませんでした。 下記のような抽出が可能であれば、ご教授いただけたらと思います。 なお、VBやマクロ等は使用したことは、ほぼありません。 シートが複数あり、またそのシートが増えていく可能性があります。 シート名→「start」「佐藤」「山本」「end」「集計1」「集計2」ととりあえず作成。 (「集計1」にて別のデータ合計をとるため、「start」「end」シートを作成しました。  なお、佐藤~山本のシートは同じ書式ですが、シート名が変わる可能性も高い。  今回したいのは「集計2」においてです) 「佐藤」シート   A   B   C   D 01 佐藤 02 \  月曜 火曜 水曜 03 6:00  1   0.5   1 04 7:00  1    1 05 ~ 18 21:00 「山本」シート   A   B   C   D 01 山本 02 \  月曜 火曜 水曜 03 6:00 04 7:00  1   1   1 05 ~ 18 21:00  1   1   1 「集計2(曜日毎で、月曜)」シート   A   B   C   D 01 月曜 02 03 6:00 佐藤 04 7:00 佐藤 山本 05 ~ 18 21:00 山本 「集計2(曜日毎で、火曜)」シート   A   B   C   D 01 火曜 02 03 6:00 佐藤 04 7:00 山本 05 ~ 18 21:00 山本 できれば、名前(シート)が非常にたくさんになる可能性があるので 集計2に出てくる名前は、詰めてが理想です。 また、できればあまり都度の細かい作業がなければありがたいです。 (利用者で、できない可能性が高い) よろしくお願い申し上げます。

  • エクセルでの複数シートの比較

    【シート1】 A B C D 1 A社 B社 C社 D社 2 50 30 20 80 3 あ い う え 4 aa bb cc dd 【シート2】 A B C D 1 A社 B社 C社 D社 2 50 30 20 80 3 あ い う こ 4 aa bbb cc dd こういった風に、基本的に同じデータ構造で作られたデータがあった時に 2つのシートで、入力されてるデータが違うかをチェックしたい時、 (ここではD3とB4のセルのデータが書き換わってる) どういった風なやり方が考えられますか? 方法としては、関数、マクロ、VBA等あると思いますが、 当方初心者に毛のはえた程度のレベルですので、 関数ぐらいしか分かりません(-_-;) ●同一ブック内にあるシートの比較 ●別ブック内にあるシートの比較   の2種類が知りたいです。 ○ここではD3とB4のセルの内容が違うということが分かればいいのです。  (D3・・・【シート1】え、【シート2】こ)←ここまで分かると必要はないです。 よろしくお願い致します。

  • EXCELで別シートを参照する計算式

    こんにちは。EXCEL2002を使用しています。 1つのファイルに個人別シートと集計シートがあり、個人別のシートのシート名は個人の 名前を付けています。(集計)(田中)(鈴木)(小松)・・・と言った感じです。 個人のシートのフォームはまったく同じ表が作られていて、 集計シートのA列に名前、B列に下記のように計算式を入れています。   A    B 1 田中 ='田中'!$D$1 2 鈴木 ='鈴木'!$D$1 3 小松 ='小松'!$D$1 このような場合、A列にシート名と同じ名前が入っていた時に ='(集計シートのA列)'!$D$1 のような計算式で参照させる事は出来ますか? シート名を置き換えすることなく、同じ計算式が使えると良いのですが。

  • excel vba 複数シートをまとめる

    お世話になります。 A.xlsというブックがあります。 その中に[集計]というシートがあります。 このシートに[ボタン]を配置してクリックしたら以下の動作を実現させたいのです。 (1)[集計]シートのA2に位置セット (2)[東京]、[大阪],[名古屋]という名称のシートの列=A2~A62、行=A2~データ最下行にある全データを[集計]シートにどんどんコピー貼り付けして追加していきたいのです。 上記動作を実現するVBAのロジックをどなたかご教授いただけますでしょうか。 よろしくお願い致します。

  • エクセルシート間の照合について

    エクセルシート間で照合をしたいと思っています。 照合する項目は2つ。2つともあえばそのA列のデータを表示するというものです。 データは シート1(前年) A  B  C  D 1  田中 123 東京都・・ 5  佐藤 124 千葉県・・ 3  山本 128 埼玉県・・ シート2(今年) A  B  C  D   山本 128 埼玉県・・   佐藤 124 北海道・・   田中 123 東京都・・ C列とD列を照合し2つともあえばシート2のA列にシート1のA列のデータを入力する。なければ「なし」と入力できるようにしたいのです。 上の場合は山本のA列に「3」佐藤には「なし」田中には「1」と入るのうになればと思います。 入力されている列は同じですが順番はばらばらです。データ数は1万件を超えています。 どなたかアドバイスいただければと思います。よろしくお願いします。     

  • エクセル、ブック間でのデータ読込

    教えてください。 Excel2010を使っています。  動作:閉じているブックからデータを読み出し、開いているブックに貼付けることです。  詳細:閉じているブック’2014_9月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215のデータを      開いているブック’2014集計.xlsx、シート’集計’、セル’B20~C35・D20~D35に貼付けをた      いのですが。      応用1.        閉じているブック’2014_9月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215         ↓        開いているブック’2014集計.xlsx、シート’集計’、セル’B20~C35・D20~D35        閉じているブック’2014_10月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215         ↓        開いているブック’2014集計.xlsx、シート’集計’、セル’B40~C55・D40~D55        閉じているブック’2014_11月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215         ↓        開いているブック’2014集計.xlsx、シート’集計’、セル’B60~C75・D60~D75        ・        ・        ・        閉じているブック’2015_9月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215         ↓        開いているブック’2015集計.xlsx、、シート’集計’、セル’B20~C35・D20~D35        それぞれのブックは事前に作成します。’2014_9月.xlsx’、’2014_10月.xlsx’、’2014_11        月.xlsx’、’2015_9月.xlsx’、’2014集計.xlsx、’2015集計.xlsx      応用2.        現状        閉じているブック’2014_9月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215         ↓        開いているブック’2014集計.xlsx、シート’集計’、セル’B20~C35・D20~D35        開いているブック’2014集計.xlsx、シート’集計’セルB19’年’、セルC19’月’を変更する        ことにより        変更        閉じているブック’2014_10月.xlsx’、シート’AAA’、セル’C200~D215・I200~I215         ↓        開いているブック’2014集計.xlsx、シート’集計’、セル’B20~C35・D20~D35        と言うことは可能でしょうか。 エクセルのマクロは初心者で苦労をしています、ご教授頂ければ幸いです。 よろしくお願いいたします。        

  • Excelでシート間のデータの抽出方法

    1つのブックに集計用のシートと、A店、B店、C店という各店舗別の売上シートがあります。 Sheet集計用のA1にA店のコード(A店は001、B店は002というようなコード)を入れると、Sheet集計用のB列の上期売上、C列の下期売上にSheetA店のB列の上期売上、C列の下期売上のデータが入るようにすることは可能でしょうか? Sheet集計用のA1のコード変更することによってデータを引っ張ってくるシートが変わる様にしたいということなんですが、Excelでどのようにすればいいかわかりません。 各店舗のシートのA1のセルにも、その店舗のコードが入力されています。

  • エクセル2002 複数シートの一括変更

    エクセル初心者ですので、説明が長く解りづらいと思いますが、困っていますので回答よろしくお願いします。 「名称」「所在」「日付」の共通した項目のある複数のシート「Aシート」「Bシート」「Cシート」を一つのブック(仮にファイル名ブック1とします)にまとめています。AシートのA1セル、BシートのA1セル、CシートのA1セルに同じ項目(名称・所在・日付)を入れたい場合、1回の入力で全てのシートの同一項目が変更できるようにBシート、Cシートに「=Aシート!A1」の式を入れ、AシートのA1セルに名称等を記入すればBシート、Cシートの同一項目も一括して書き換わるようにしています。 同一ブックで使っている分には、上記の方法で共通した項目を一括変更できるのですが、別のブックからシートをコピーした場合、「=Aシート!A1」の式がかわってしまいコピーしてきたシートの項目だけが変わらない状態になります。 例えば、ブック1と書式が同じブック2(シートA’、シートB’、シートC’の複数シートで構成され各シートはブック1のシートA・B・Cと同じ書式)がありブック1にブック2のシートB’をコピーした場合シートB’のA1セルは、「=[ブック2.xls]Aシート!A1」となり自動的にこのシートの項目が変換されません。このとき、[ブック2.xls]の部分だけを毎回消して使っていますが、シートが増えると作業時間もかかりますし、複数のスタッフで使う場合この使い方をそれぞれに説明する必要があり困っています。 解りづらい説明で申し訳ありませんが回答よろしくお願いします。

  • エクセルで複数のシートからデータを集計したい。

    エクセルで複数のシートから、あるデータを取り出し、別のシートに集計したいのですが、関数を入力すると莫大な量になってしまいました。 関数とは別の方法で集計する方法をご教授お願いします。 1日~31日のシートがあります。 シート1日内容は A   B    C    D      E     1  NO  原因(1) 原因(2)  原因(3)   2 101   10       15   (b2+c2+d2)  3 105   20   40       (b3+c3+d2) 4 108       20   100 (b4+c4+d4) といった内容です。 1日から31日のセルA2などは固定した数値でありません。 なんで、例えばA3に101が入っている場合があります。 集計シートは A   B    C    D      E     1  NO  原因(1) 原因(2)  原因(3)   2 101               (b2+c2+d2)  3 102               (b3+c3+d2) 4 103              (b4+c4+d4) のようになってます。 B2に=SUMIF('1日'!A2:A4,A2,'1日'!b2:b4)+SUMIF('2日'!A2:A4,A2,'2日'!b4:b4)+・・・・・が31日のシート分まで作成するとファイルが重くなりすぎてしまい困っております。 よろしくお願いします。

  • EXCELVBA 複数シートパスワード設定解除

    お世話になります。 A.xlsxというブックがあります。 この中に田中、鈴木、高橋と氏名のシート複数あります。このシートは増えたり減ったりします。 一番左のシートを選んで、ボタンをクリックしたら以下の処理が走るVBAを作成したいのです。 一番左のシートから順にパスワードを解除(パスワードはAAAA)して、ある処理をして処理後にまたパスワードを設定(パスワードはAAAA)して次の右隣のシートに映って同じ処理を繰り返していく、というVBAロジックをご教授いただけませんでしょうか。 ただしシート名に"*集計*"と名称がつくシートが存在する場合は上記処理をスキップさせたいです。 どなたかご教授いただけませんでしょうか。 よろしくお願い致します。 環境 Excel 2013

専門家に質問してみよう