複数のBookから決まったセルの値を別のBookに

このQ&Aのポイント
  • EXCELで複数のBOOKから決められたセルにある値を抽出してひとつのBOOKに纏めたいのです。
  • Book1~50から抽出したデーターを縦に並べたいのです。
  • Book名は『漢字+数字』です。
回答を見る
  • ベストアンサー

複数のBookから決まったセルの値を別のBookに

お世話になります。 EXCELで複数のBOOKから決められたセルにある値を抽出してひとつのBOOKに纏めたいのです。 BOOK1~50、 BOOKには31枚のSheetがあります。 その中のSeet31にSeet1~30のデーターを纏めてあります。 Seet31の A1~3 B1~2 C1~3 のデーターを抽出して 新しく作ったBook【集計】のSeet1にBook1~50から抽出した データーを縦に並べたいのです。 【 例 】   A1 A2 A3 B1 B2 C1 C2 C3 1  5  2  4  3  6  7  1  3 2  2  3  4  6  9  7  5  2 3  7  8  5  6  2  3  1  8 と、いった感じです。 なお、Book名は『漢字+数字』です。 宜しくお願いします。

  • kogoro
  • お礼率84% (108/128)

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

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

マクロという方法を使った方が簡単なので,次の通りにします。 準備: Book1から50を1つのフォルダに集めておく 集計ブックも作成して同じフォルダに入れておく 手順: 集計ブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1()  dim myPath as string  dim myFile as string  dim t as workbook  dim w as worksheet  dim r as long, c as long  application.screenupdating = false  set w = activesheet  cells.clearcontents  range("A1") = "File Name"  range("B1:I1") = array("A1","A2","A3","B1","B2","C1","C2","C3")  r = 1  mypath = thisworkbook.path & "\"  myfile = dir(mypath & "*.xls*")  do until myfile = ""   if myfile <> thisworkbook.name then    r = r + 1    w.cells(r, "A") = myfile    set t = workbooks.open(filename:=mypath & myfile)    for c = 2 to 9    w.cells(r, c).value = t.worksheets(31).range(w.cells(1, c).value)    next c    t.close false   end if   myfile = dir()  loop  application.screenupdating = true end sub ファイルメニューから終了してエクセルに戻る ALT+F8を押し,登録したマクロを実行する。

kogoro
質問者

お礼

ありがとうございます。 出張に出ていて、御礼が遅れました。 マクロが使えると非常にうれしいです。 明日にでも試してみます。 それから、自分でもこのマクロを参考に解読して勉強させていただきます。

その他の回答 (2)

  • hayasi456
  • ベストアンサー率40% (2402/5878)
回答No.2

泥臭い方法ですが まず、BOOK1~50とBook【集計】は一つの専用のフォルダーに入れます。 BOOK1~50とBook【集計】とをリンクさせる為、フォルダに纏めておかないと他のPCで使えなくなります。 Book【集計】とBOOK1~50の内適当数開きます。 整列させ操作したすい順番に並べます。 参考URL http://kokoro.kir.jp/excel/window-arrange.html BOOK1の適当な空欄のセルに =A1 =A2 =A3 =B1 =B2 =C1 =C2 =C3 と横並びで入れるとそれぞれ A1 A2 A3 B1 B2 C1 C2 C3にリンクしたセルが出来ます。 このリンクしたセルをコピーしBOOK2~50に貼り付けます。 各ブックのA1 A2 A3 B1 B2 C1 C2 C3にリンクしたセルを全体を選択して 切り取り、Book【集計】のそれぞれのセルに貼り付けます。 何故かコピーでは上手くいきません。 貼り付けると=A1は =[ファイル名.xls]Sheet31!A1 になります。 ショートカットキーを使うと楽です。 コピー  [Ctrl]+C 貼り付け [Ctrl]+V 切り取り [Ctrl]+X 参考URL http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E4%B8%80%E8%A6%A7

kogoro
質問者

お礼

ありがとうございます。 出張に出ていて御礼が遅れました・・。 明日にでも試してみます。 この方法ですと、切り取りーー貼り付けを50回繰り返して行うのですね。 一度作ってしまうと、後は繰り返し仕えし使えそうですね。

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

これこそチョコチョコとメモ程度を書いて、課題を丸投げしただけではないか。 少しでも手をつけて自分でやるようにしてください。 ここは下請けをやりますよ、というコーナーではないよ。 これはエクセルVBAで無いと出来ないのは認識しているよね。 マクロの記録というのがあって、1つのブックを開くのにはどういうコードになるか、判ると思う。 あとファイルはフォルダの元にまとまっている場合が多いがその点はどうなのかな。 ーー あるフォルダの中のブックを(ファイル名の点から)より分ける方法はわかるかな。 Googleで「VBA フォルダ ファイルの取得」で照会すれば沢山コード例がある。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.htmlなど ここで拡張子でエクセルで無いものは捨てる ファイル名文字列で、漢字名の部分が目的のものでなければ捨てる。 そして条件を満たす1つエクセルファイルを掴んだら、OPENする。 そして Sub test01() flname = "C:\Documents and Settings\xxxx\My Documents\YYYY.xls" Set wb = Workbooks.Open(flname) For i = 1 To 3 MsgBox wb.Worksheets("Sheet1").Range("A" & i) Next i End Sub のようなので、Sheet1のA1:A3セルのデータが採れる。 処理が終わったらCLOSEする。 しかし質問の課題は処理に相当時間がかかりそう。こういうのはエクセルのファイル設計の失敗か、エクセルに過ぎた処理内容だと思う。

kogoro
質問者

お礼

ありがとうございます。出張に出ていて御礼が遅れました。 別に丸投げしたわけではないのですが、自分の力では30枚のシートから必要なDATAを抜き出して31枚目のシートに抽出するのが精一杯だったのです。 もう少し知識があれば良いのですが、どう考えても出来そうになく、期限に間に合いそうに無かったので 相談させていただきました。 おっしゃるとおり、自分で努力することは大切ですね。・・反省・・

関連するQ&A

  • 複数のエクセルデータ上特定位置の値を一つのセルに

    大量の同じフォーマットのエクセルファイル(Book1,Book2...)があり、それぞれのBookファイルの「NO.」シートのD6セルには番号が入っています。それぞれファイルでSheet1の特定のセル(例えばB4セル)の値を「データ」ファイルのSeet1にまとめたいです。「データ」ファイルのA列には「NO.」が入力されているので、Bookファイルの値はそれぞれ対応する番号の右側3番目のセルに移したいです。 いちいちコピーすることもできますが、あまりに量が多いので、VBAで簡単にできないかといろいろ試行錯誤してみましたが、うまくいかず悩んでいます。どなたか教えていただければと思いここで質問します。質問の意図がうまく伝わったかどうか不安ですが、よろしくお願いいたします。

  • 複数のブックのデータを集めて、グラフを書きたいです

    Book1、Book2には、異なる行列のデータがあります この2つのブックのデータを参照してグラフを書くマクロをVBAで組んでいます Book1,Book2のシートをそれぞれグラフに書くところまでは出来ました 質問1. Book1のA1~An(Aのセルすべて)を、Book2の指定のセル(例えばC1~Cn)に コピーしたい 質問2. Book2のセルB1~B100のデータと Book1からコピーしたC1~C300のデータを 同じグラフ上にプロットしたい AのセルをX軸のデータとして使用する 宜しくお願いします

  • 複数のExcelブックから特定シートのセル範囲抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル範囲を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 このサイトで殆どよく似た回答を読んだのですがうまくいきません。VBA初心者です。 よろしくお願いします。 【前提】 ・実行する端末のOSはWindows 10 ExcelはOffice365 ProPlus ・対象フォルダはネットワーク接続フォルダ  この中に、複数のExcelブック(xlsx、xlsm)があります。 ・抽出したい対象は、各ブック内の「台帳」シートの「A3:Cの最終行」で  複数のブックの中には「台帳」シートが含まれていないブックも混在しています。 【抽出一覧作成イメージ】 ・「集約.xlsm」ブックの「集計」シートの2行目から抽出した結果を一覧表示する。 ・「集約.xlsm」ブックにマクロは登録する ・表示はA列に抽出元ブック名(=ファイル名)、B列からD列に抽出元「A3:Cの最終行」セルの値。 ・「A3:Cの最終行」セルの値を「集約.xlsm」ブックの「集計」に貼り付ける際には「値で貼り付ける」が望ましい。

  • 複数のエクセルブックから特定シートの特定セル抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル値を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 よく似ている質問、回答を読んだのですが、私のレベルではとても応用できず質問させていただきます。 【前提】 ・実行する端末のOSはWindows XP(SP3)、Excelは2003 ・対象フォルダはネットワーク接続フォルダ「\データ解析\データ」  この中に、複数のExcelブックがあります。 ・抽出したい対象は、各ブック内のシート(シート名はファイル名と同じ)の「BO6からBW16までの□の範囲」で統一されています。 【抽出一覧作成イメージ】 ・「集計.xls」ブックの「Sheet1」の2行目から抽出した結果を一覧表示する。 ・表示はA列に抽出元ブック名(=ファイル名)、B列に抽出元BO6セルの値。以降,C列・D列と 順に値を入れていきたい。 ・BO6~BW16までのセル値を「集計.xls」ブックの「Sheet1」に貼り付ける際には「値で貼り付ける」が望ましい。 というようなイメージです。 とても勝手なお願いではありますが、宜しくお願いいたします。

  • EXCELでブックを開かず?に値をコピーするには?

    VBAに関する質問です 現在作業中のブック「Book1」のシート「Sheet1」のセル「A1~A10」の値を、開いていない「Book2」のシート「Sheet2」のセル「B1~B10」にコピーし、さらに「B1~B10」の値をソートするということをしています。 現状ではBOOK2を開いてコピーするという方法しか判らないので、そうしているのですが、いちいちBOOK2が立ち上がるのが目障りなので、BOOK2を開かないか非表示のまま作業できないものかと思っております。 何卒よろしくお願いします。

  • 同フォルダ内複数BOOKを一つのBOOKにまとめる

      『同じフォルダ内の複数BOOKのシートの一部をまとめて1つのBOOKに貼り付けたい』(ミント) 大変困っています!! すべて同じ構成の複数BOOKの最初のシート(Sheet1)の一部のセル範囲を新しい集計用のシートに貼り付けるVBAのコードを教えてください!!!!!! VBAを使用したいのですが、いろいろ調べてもたくさんコードがあって、どれを使えばいいかわからず、混乱状態になってしまっています。。。 詳細はこのような形です。 各BOOKの最初にSheet1があり、その構成はどのBOOKも同じです。 <たとえば・・。>【Book1】 A B C D 1 あ い う え→ラベル行2 お か き く3 け こ さ し【Book2】 A B C D 1 あ い う え→ラベル行2 す せ そ た3 ち つ て と これを【集計用シート】 A B C D 1 あ い う え2 お か き く3 け こ さ し4 す せ そ た5 ち つ て と このようにつなげていきたいのです。全BOOKが複数シートありますが、集計するのはSheet1だけでよいです。 できれば、1行目にあるラベル以外を順番に貼り付けられればと思います。要するに、上記の例でいくと、2行目から集計用シートに貼り付けられていくイメージです。なお、すべてのBOOKは一つのフォルダにまとめられています。 VBA初心者でこの情報だけで絞り込めるのかわからないのですが、他にも情報が必要であれば教えてください。。。 上記のことができるコードを記載頂けたらと思います!!宜しくお願いします!!! なお、Excelのバージョンは2007、OSはWindows7です

  • エクセルマクロ:別のブックから該当するデータをコピー

    Book1のSheet1、A列に日付、B列に対応するデータがあります。 Book2のSheet1A1セルに入力された日付と一致するBook1Sheet1B列の値を、Book2のB1セルに値貼り付けしたいのですが、どのように記述すればよろしいでしょうか。 宜しくお願いいたします。

  • マクロで他ブックを開きデータを取得する方法について

    BOOK1は集計表でシートは1枚です。BOOK2はデータ入力シートで50位のシートが含まれています。 BOOK1からマクロでBOOK2を開き、各シートにあるデータをBOOK1(集計表)の所定のセルへ表示させようと考えています。例えば「BOOK2のSheet2のセルC6のデータをBOOK1のセルF8へ、Sheet3のセルC6のデータをBOOK1のセルF12へというように順次50枚のシートに入力した各データをBOOK1の集計表に表示させる予定です。どのようなマクロ構文にしたら良いのでしょうか? ご教授よろしくお願いします。

  • ブックを開かずに、フォルダ内にある複数ブックの、特定セルの値を抽出した

    ブックを開かずに、フォルダ内にある複数ブックの、特定セルの値を抽出したいのですが、やり方をご存じの方がいらっしゃったら教えてください。 フォルダ内には150個ほどエクセルファイルがあり、中身のシート名・フォーマットは同じなのですが、すべてファイル名が違います。 ファイルを開くことなく、これらのファイルの特定のシートの特定のセルにある値を、全て1枚の表にまとめることは可能でしょうか? フォルダ名 →"AGENDA_RIREKI" 参照したいファイル名 →ファイルによって異なる "#1111 AAA.xls"など 参照したいシート名→ "AGENDA" 参照したいセル→ "A7" と "E20~E70(E列のみ) データをまとめたいファイル名→ "AGENDA_matome.xls" データをまとめる時の形↓ (A列)          (B列)            (C列)        (D列) ファイル1のA7の値 ファイル1のE20の値  ファイル2のA7の値  ファイル2のE20の値                     E21の値                    E21の値                     ・                     ・                     ・     VBAは初心者です。。できればコードをそのまま拝借したいです。 お知恵を貸してください。よろしくお願いします。

  • エクセルで複数のブックの1つのセルを複数でコントロールする方法

    エクセルで複数のブックの1つのセルを複数でコントロールする方法 こんなことは可能でしょうか? たとえば、 Book.A、Book.B,Book.Cの3つのBookがあります。 それぞれの"A1"セルは、可変数値でBook.A、Book.B,Book.Cのそれぞれから変えることができる。 一般的には、「Book.Aを変えるとBook.B,Book.Cがリンクしている」というものなのですが、 Book.BからでもBook.Cからでも変えることができる方法を知りたいのです。 共有ブックという方法以外でお願いします。

専門家に質問してみよう