- ベストアンサー
複数のBookから決まったセルの値を別のBookに
- EXCELで複数のBOOKから決められたセルにある値を抽出してひとつのBOOKに纏めたいのです。
- Book1~50から抽出したデーターを縦に並べたいのです。
- Book名は『漢字+数字』です。
- みんなの回答 (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を押し,登録したマクロを実行する。
その他の回答 (2)
- hayasi456
- ベストアンサー率40% (2402/5878)
泥臭い方法ですが まず、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
お礼
ありがとうございます。 出張に出ていて御礼が遅れました・・。 明日にでも試してみます。 この方法ですと、切り取りーー貼り付けを50回繰り返して行うのですね。 一度作ってしまうと、後は繰り返し仕えし使えそうですね。
- imogasi
- ベストアンサー率27% (4737/17069)
これこそチョコチョコとメモ程度を書いて、課題を丸投げしただけではないか。 少しでも手をつけて自分でやるようにしてください。 ここは下請けをやりますよ、というコーナーではないよ。 これはエクセル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する。 しかし質問の課題は処理に相当時間がかかりそう。こういうのはエクセルのファイル設計の失敗か、エクセルに過ぎた処理内容だと思う。
お礼
ありがとうございます。出張に出ていて御礼が遅れました。 別に丸投げしたわけではないのですが、自分の力では30枚のシートから必要なDATAを抜き出して31枚目のシートに抽出するのが精一杯だったのです。 もう少し知識があれば良いのですが、どう考えても出来そうになく、期限に間に合いそうに無かったので 相談させていただきました。 おっしゃるとおり、自分で努力することは大切ですね。・・反省・・
お礼
ありがとうございます。 出張に出ていて、御礼が遅れました。 マクロが使えると非常にうれしいです。 明日にでも試してみます。 それから、自分でもこのマクロを参考に解読して勉強させていただきます。