- ベストアンサー
複数のシートの同じセル範囲を一つのシートにまとめたいです。
Excelで複数シート上の同じセルにある表を一つにまとめたいです。 表はBQ6:CS6で、A:BPにある表の集計が入ってます。 多数のシート上のBQ6:SC6の表を一つのシートに値で貼り付けていきたいのですが、 シート名が固定でないこと、シート数が20~30と複数あり、数も決まってないこと、 そんなブックがいくつもあり非常に困っております。 VBAの貼り付け、マクロの自動登録くらいのスキルしかありません。 どなたかお知恵を貸して下さい。お願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
同一ブック内にシートを追加し、指定範囲をA1基点に下方向に連続コピー Sub Macro1() Dim sno As Integer Dim I As Integer sno = Worksheets().Count Sheets(1).Select Sheets.Add For I = 2 To sno + 1 Sheets(I).Range("BQ6:SC6").Copy Sheets(1).Range("A65535").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Next End Sub 適当に手直しをしてください。
その他の回答 (4)
- web2525
- ベストアンサー率42% (1219/2850)
実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 私もエラーになりますよ、エクセル2003ですからSC列までは列取れませんから。 2007なら可能でしょうけど。
お礼
回答ありがとうございます。 SCじゃなくてCSでした>< どんくさいミスしてすいませんでした(´・ω・`) うまく起動できました。 本当に助かりました。ありがとう御座います。
- xls88
- ベストアンサー率56% (669/1189)
ChocoBambiさんがやりたいことって、ただ「値」に変換することですか。 拝見したコードは、個々のシートを「値」で貼り付けしているだけです。 個々のシートにある表を、一つのシートに纏めたい、のではなかったのですか? 実作業(やりたいこと)を、「マクロの記録」してくださいと、アドバイスを差し上げました。 コードを拝見すれば、例えば、For~Loop出来るような規則性があるのかどうか判断ができます。 残念ながら、提示していただいたコードでは何も分かりません。 > Sheets("Sheet1").Select > Cells.Select > Range("AC1").Activate > Selection.Copy > Selection.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False は Sheets("Sheet1").Cells.Copy Sheets("Sheet1").Cells.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False あるいは With Sheets("Sheet1") .Cells.Copy .Cells.PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End With というように纏めることができます。
お礼
大変申し訳ありません。 VBAの内容を理解せず文を区切ってしまったために、 最初に値にして貼り付けるの値にするところだけ抜粋してしまいました>< 以下のコードが貼り付けの内容です。 ちなみに1.全部のシートを値にする。 2.BQ6から表のある範囲をCtrl+Shiftで表のある範囲を指定 表は(BQ6:SC6)一番左のセルだけ項目まで コピーしてますがそれはなくても構いません。 3.集計というシートに貼り付け ご指定ありがとうございます。 値のコードも纏めてみます^^ Sheets("○").Select Range("BQ5:CS6").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A1").Select ActiveSheet.Paste Sheets("△").Select Range("BQ6").Select Range(Selection, Selection.End(xlToRight)).Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A3").Select ActiveSheet.Paste Sheets("□").Select Range("BQ6").Select Range(Selection, Selection.End(xlToRight)).Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A4").Select ActiveSheet.Paste
- web2525
- ベストアンサー率42% (1219/2850)
マクロ作成時 >シート名が固定でない Worksheets(シート番号)で指定すればシート名に左右されない。 >シート数が20~30と複数あり、数も決まってないこと Worksheets.Countでシート数は確認できます。 For~Next文でセル範囲コピーを繰り返すことで集計できると思います。
お礼
早速のご回答ありがとうございます。 自分でVBAを解析する能力はなくて、For~Next文もどこに追加してよいのか分かりません。 WorkSheet(シート番号)でやるとセルの指定ができなくなってしまいます。 Worksheet,Countをどこにつけていいのかわかりません。 自業自得ですが、VBAのヘルプ機能はCDを無くしてしまって使えなくなってしまいました。 せっかくヒントを下さったのに申し訳ありませんが、自分で書き換えるのはやはりうまくいきませんでした(´・ω・`)
- xls88
- ベストアンサー率56% (669/1189)
> VBAの貼り付け、マクロの自動登録くらいのスキルしかありません。 これを機会に、理解を深めていってください。 コードを拝見した方がアドバイスし易くなります。 表を2~3個、一つのシートにコピペする作業を「マクロの記録」して、得られたコードを提示してください。 表を纏めるシートをシート1と仮定します。シート1から記録を始めてください。 表のあるシートに移動、表の範囲を選択、コピー、シート1で「形式を選択して貼り付け」の「値」で貼り付け。 表の罫線とかも貼り付けるなら、そのままの状態で「形式を選択して貼り付け」の「書式」で貼り付け 次の表のあるシートに移動、以下同じ作業の繰り返し といった手順になると思います。 全ブックの表を、ひとつのシートに集めるのですか? それともブック単位で行えばよいのですか?
お礼
アドバイスありがとうございます。 こちらの情報が少なくて、申し訳ありませんでした。 ブック単位で集計です。 コードをとってみました・・・がとても自信がありません>< シート名は各店舗の名前が入っているので数字に変えてみました。 Sheets("1").Select Cells.Select Range("AC1").Activate Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("2").Select Cells.Select Range("AI1").Activate Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("3").Select Cells.Select Range("U1").Activate Application.CutCopyMode = False Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
お礼
回答ありがとうございます。 実行してみましたがデバックがおきてしまいました>< 実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 と表示がでます。改善点のヒントがあれば頂きたいです。 何度も申し訳ございません。