プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
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名は『漢字+数字』です。

宜しくお願いします。

A 回答 (3件)

これこそチョコチョコとメモ程度を書いて、課題を丸投げしただけではないか。


少しでも手をつけて自分でやるようにしてください。
ここは下請けをやりますよ、というコーナーではないよ。
これはエクセルVBAで無いと出来ないのは認識しているよね。
マクロの記録というのがあって、1つのブックを開くのにはどういうコードになるか、判ると思う。
あとファイルはフォルダの元にまとまっている場合が多いがその点はどうなのかな。
ーー
あるフォルダの中のブックを(ファイル名の点から)より分ける方法はわかるかな。
Googleで「VBA フォルダ ファイルの取得」で照会すれば沢山コード例がある。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …など
ここで拡張子でエクセルで無いものは捨てる
ファイル名文字列で、漢字名の部分が目的のものでなければ捨てる。
そして条件を満たす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する。
しかし質問の課題は処理に相当時間がかかりそう。こういうのはエクセルのファイル設計の失敗か、エクセルに過ぎた処理内容だと思う。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/14 23:32

泥臭い方法ですが



まず、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% …
「複数のBookから決まったセルの値を別の」の回答画像2
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/14 23:48

マクロという方法を使った方が簡単なので,次の通りにします。




準備:
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を押し,登録したマクロを実行する。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/14 23:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!