• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数ブックを新しいブックのSheet1にまとめたい)

複数のブックをまとめる方法

このQ&Aのポイント
  • 複数のブックを1つのシートにまとめる方法を紹介します。マクロやVBAを使用することで効率的にデータを統合できます。
  • 具体的な手順は以下の通りです。まず、統合したいデータを含むブックを開きます。次に、目的のシートを作成し、データを貼り付けます。最後に、マクロやVBAを使用してデータを統合します。
  • データ統合の際には、ファイルの場所や拡張子の指定に注意が必要です。また、別のシートを選ぶ理由や、Excelの機能を使って日付を入力する方法についても説明します。

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

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

動物さんにも判るように説明するとなると、随分と冗長になってしまいます。我慢してよく読んでその通りに行ってください。 まず準備として、集めたい複数のブックをまとめて入れておく、決まった置き場所(フォルダ)を用意します たとえばあなたのマイドキュメントの中に「元データ」とでも名前を付けたフォルダを用意します 元データフォルダに、あなたが準備した複数のブックをまとめて放り込んでおきます。 フォルダを用意するのが分からないときは:  マイドキュメントを開く  右クリックして新規作成でフォルダを選ぶ  「新しいフォルダ」という名前のフォルダの名前を元データに修正する フォルダの名前の変更のやりかたが分からないときは:  フォルダを選ぶ  F2キーを押す  名前部分が選択されるので、元データと書き換える 次に調査として、元データフォルダに入れた売上データブックの1つを右クリックして「プロパティ」を確認します 場所:欄に、元データフォルダまでのパスが表示されているので、間違えないようによく読み取ります たとえば c:\Users\<UserName>\Documents\元データ といった具合に書かれています。ダイアログからマウスでこの文字列を選択して、右クリックしてコピーしてもOKです。 さて。 あなたのご相談では、次のような点が説明不足です。 1.売り上げデータが日付ごと記入されているそれぞれのブックには、いったい何枚のシートが入っているのか   1冊のブックには1枚だけシートがあって、それを取ってくればいいのか   実は1冊のブックに複数のシートがあって、イチイチシートをめくって取ってこなきゃならないのか 2.売り上げが記入されている各シートの、具体的にどこのセル範囲をコピーしたいのか   具体的に何列からどこ列までなのか   たとえば30行目までのように固定のセル範囲で決まっているのか   それとも、シートごとに何行記入されているのかバラバラなので、イチイチ調べてコピーしたいのか   調べるとしたら、いったいどこ列をみれば「この行が一番下の行だ」と判るようになっているのか あなたもイチイチ言われて説明したくないでしょうから、勝手にこちらでこういう事だとして説明を続けます。ご自分で適切に修正してください。 ○ブックには1枚だけシートが含まれている ○各シートはA列からJ列まで使っている ○A列の一番下が、その表の一番下の行になっている ○1行目にはタイトル行が記入してあり、2行目からデータがつらつら並んでいる ○1行目はコピーせず、2行目からのデータだけコピーしてきたい ようやく本番です。 集約用のブックを1冊用意し、元データフォルダの隣に保存しておきます 間違っても元データフォルダの中に入れてしまわないように気を付けます 集約ブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim myPath as string  dim myFile as string  dim flg as boolean  worksheets.add before:=worksheets(1)  flg = true ’さっき調べたパスを下記に記入する。最後の¥を消してしまわないよう注意する  mypath = "c:\Users\<UserName>\Documents\元データ" & "\"  myfile = dir(mypath & "*.xls*")  do until myfile = ""   workbooks.open mypath & myfile   range(iif(flg, "A1:J", "A2:J") & range("A65536").end(xlup).row).copy _    thisworkbook.worksheets(1).range("A65536").end(xlup).offset(1)   workbooks(myfile).close false   flg = false   myfile = dir()  loop  workbooks.open mypath & dir(mypath & "*.xls*")  range("1:1").copy thisworkbook.worksheets(1).range("A1")  workbooks(myfile).close false end sub ファイルメニューから終了してエクセルに戻る ALF+F8を押してマクロを実行する。 それから >入力した際にデータが入っている前の列に日付をそのまま入れられたら本当に助かる どこに何をどこから取ってきてどうしたいのか、さっぱり意味不明です。 キチンと具体的な「目に見える」情報を添えて、何をしたいのか別途のご相談として改めて投稿してください。

photosyrup
質問者

お礼

keithinさん>わかりやすいご回答をしていただきまして本当にありがとうございます。 やってみましたがどうやらパスが違うみたいで存在しないとエラーが出ます。デスクトップにH22というフォルダーを作り行ってみました。 myPath = "C:¥Users¥UserName¥Desktop¥H22¥"のような形です。動物なのでどこが悪いのか・・。 指摘頂きました内容をもっと具体的に記載して改めて投稿しなおしますので出来ましたらよろしくお願いします。

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

関連するQ&A