[[20111024165646]] 『複数シートの同じ範囲のみを抽出して新しいブック』(みー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数シートの同じ範囲のみを抽出して新しいブックへコピー』(みー)

シート数が150くらいあるデータなのですが、全てが同じ形式になっています。

その中のある部分だけを範囲選択し、
新しいブックへその部分だけをコピーしたいのですが、
どのようにしたら良いのでしょうか?

バージョンはExcel2003 OSはXPになります。

よろしくお願いします。


 エクセルの操作では、特定の領域に絞って・・という器用なことができないので、ガマンして、シートごとに作業をやる・・・
というのが大変だということならマクロかな?
コピーしたい領域以外に罫線や色がついているなら、もうすこしひねる必要はあるけど、そうじゃなかったら

 Sub Sample()
    Dim sh As Worksheet
    Dim v As Variant
    Application.ScreenUpdating = False
    Worksheets.Copy
    For Each sh In Worksheets
        v = sh.Range("A1:B2").Value
        sh.Cells.ClearContents
        sh.Range("A1:B2").Value = v
    Next
    Application.ScreenUpdating = True
 End Sub

 注)仮に決められた領域をA1:B2にしてある。

 (ぶらっと)

 下記のような状態・・?
http://miyahorinn.fc2web.com/schooltxt/Ex060120.html
 
下記は各シートのA1セルを新規ブックの左端のシートに順次
1せるずつ貼り付けしていく例。
 
 Sub test20111024()
     Dim sh As Worksheet
     Dim lngR As Long
     Dim newWB As Workbook
     Set newWB = Workbooks.Add
     For Each sh In ThisWorkbook.Worksheets
         lngR = lngR + 1
         sh.Range("A1").Copy newWB.Sheets(1).Cells(lngR, 1)
     Next sh
 End Sub
 
んんん?
もしかして、「複数シートの特定領域を別のブックの複数シートへ貼り付け」?
コピー元ブックの左端シートの見出しをクリック、
Shiftを押しながら右端シートをクリック(作業グループにする)
範囲を選択、コピー、
貼り付け先ブックを選択して右端シートの貼り付け先左端上端セル選択、
貼り付け。
(貼り付け先ブックはコピー元ブックよりもシート数が多くなくてはなりません)
 
さあ、どっちだ。
(みやほりん)(-_∂)b

お2人ともありがとうございます。
実は、私は代理に掲載したのですが…
質問者に聞いたら、

  A   B   C 

1    住所 

2

3    名前

4

こんな感じに入っている住所と名前+あと1つを範囲選択して
(シート数は180くらい)
1枚のシートに

   A      B      C

1  住所    名前     +α

2 シート2住所   名前     +α

3 シート3 〃    〃      〃

4 シート4 〃    〃      〃

このように180枚近くのシートにある情報をまとめたいようなんです。

やっぱり、VBAじゃないと難しいでしょうか?

私はMOUS上級までしか取得していないので、

ほぼVBAはできません。質問者はそれ以下です…。

わかりにくい説明で申し訳ございませんが、よろしくお願いします。


 MOUSすごいですね〜 私なんてとても取れる気がしません・・・

 Alt+F11でVBEを出して、挿入→標準モジュールで出てきた所に張り付けて実行してみてください。

  Sub test()
    Dim tbl() As Variant
    Dim i     As Long
    With ActiveWorkbook.Worksheets
      ReDim tbl(1 To .Count, 1 To 3)
      For i = 1 To .Count
        tbl(i, 1) = .Item(i).Range("B1").Value
        tbl(i, 2) = .Item(i).Range("B3").Value
        tbl(i, 3) = .Item(i).Range("B5").Value
      Next i
    End With
    With Workbooks.Add.Worksheets(1)
      .Range("A1:C1").Value = Array("住所", "名前", "+α")
      .Range("A2").Resize(UBound(tbl), 3).Value = tbl
    End With
  End Sub

 (momo)

 あーやっちまったか、のパターンですね。
だいたい、エクセルの入門関係でセルの書式設定とか、
罫線の引き方とか、SUM関数とか、すごく後回しでもいいことを
先に掲載してしまうからだよね。
 
MOUS上級取得していたら感づくことがあると思うけれども、
データメニューや関数は対象がリスト形式で入力してあることを
前提にしてあるものがいくつもありますよね。
 
だから、先に作るべきは
   A      B      C 
1  住所    名前     +α 
2 シート2住所   名前     +α 
3 シート3 〃    〃      〃 
4 シート4 〃    〃      〃 
こっちのほうで、これが出来ていれば、
  A   B   C  
1    住所  
2 
3    名前 
4
こちらの先に作っちゃったほうはそんなに苦労しないで作れます。 
(本当は検索用のキーがあったほうが良いけど)
 
で、解決策は、私の体験談よろしく、腱鞘炎覚悟で手作業コピペするか、
マクロでやっつけ仕事にするか。
マクロ作成するにしても、セル位置など正確な必要部分の情報提示が必要。

momo さんのでウマく行くといいけど。
(みやほりん)(-_∂)b


お2人ともありがとうございます。

momoさんのでやってみて…ダメだったら

本当に腱鞘炎覚悟で手作業でやらせます。

質問者、今日はお休みなので…


 一応補足として、私のコードの変更点はわかりますか?
 Rangeの所のセルアドレスと
 最後のArrayの所の文字くらいです。

 該当ブックの全部のシートから抽出するようにしてあります。
 (momo)

 全シート同じセルに同じ情報があって、シート名が「Sheet1」のデフォルトのままなら
とりあえず同じブックにシートを追加してそこで

 =INDIRECT("Sheet"&ROW(A1)&"!A1")

 のようにすれば下に「Sheet2」「Sheet3」・・・と続きますけど。
シート名がばらばらなら一度シート名一覧を作る必要があります。

 まあ、重いですし、マクロなら別ブックまで一発ですから、マクロのほうがいいと思いますけど、
腱鞘炎よりはましかな・・と・・・・
(さくら)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.