• ベストアンサー

エクセルでのシート間コピー(移動)

データはSheet1からSheet10に入っていると仮定します 例えば Sheet1のA-1のセルデータをSheet11のA-1にコピー Sheet1のC-4のセルデータをSheet11のB-1にコピー            ・            ・            ・ Sheet1のB-2のセルデータをSheet11のJ-1にコピー Sheet2のA-1のセルデータをSheet11のA-2にコピー Sheet2のC-4のセルデータをSheet11のB-2にコピー            ・            ・            ・ Sheet2のB-2のセルデータをSheet11のJ-2にコピー つまりSheet1からSheet10に入っているデータをSheet11に一気に並び替えてコピー(移動でも可) したいのですが方法がわかりません どうぞよろしくお願いします

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

  • ベストアンサー
  • norakuma
  • ベストアンサー率29% (293/977)
回答No.9

#8です。 シート名に「漢字」があるってことですか? であれば、実は今のままで動くはずです。 というのは、 Sheet(n)という数え方は、Sheetの中の何番目という読み方をするので、「シート名」がなんであっても問題ないのです。 コピー先だけを、一番後ろに持っていくのを忘れないようにしてください。 またなにかあれば、補足で求めてください。 シート名もコピーしたいとか。。。 セルの中身が漢字であっても問題なく動きます。

yu-yake
質問者

お礼

無事完了しましたありがとうございました 感謝感激。。。

その他の回答 (8)

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.8

#4,#6です。 補足を読んだので修正します。 コピー先のシートが、Sheetの最後にくっついていることが条件です。(名前がわからないので) 修正と書かれたところのセルの値のみ変更してやってみてください。 ------------------------------------------------ Public i As Integer Public s As Integer 'シートを一枚ずつ処理します。 Sub test() s = Sheets.Count For i = 1 To s Sheets(i).Select If i <> s then Call こぴぺ() End if Next End Sub 'それぞれのシートで作業します。 Sub こぴぺ() Dim varT(8) As Variant Dim n As Integer '配列を作る varT(1) = Cells(1, 1).Value 'A1 varT(2) = Cells(4, 3).Value 'C4 varT(3) = Cells(4, 3).Value '修正 varT(4) = Cells(4, 3).Value '修正 varT(5) = Cells(4, 3).Value '修正 varT(6) = Cells(4, 3).Value '修正 varT(7) = Cells(4, 3).Value '修正 varT(8) = Cells(2, 2).Value 'B2 'SheetSに移動して、Sheetごとのデータを横一列に貼り付け 'Sheet1は、1行目 'Sheet2は、2行目 '以下、Sheetiを、i行目としています。 Sheets(S).Select For n = 1 To 8 Cells(i, n) = varT(n) Next End Sub

yu-yake
質問者

補足

テストしましたら見事にできました^^ ただ、実際のシートには顧客の名前(漢字)が入っていますどこをどう修正すればいいかアドバイスお願いします

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.7

#2です。 なんか、、すごいことになってますね(^^;) #2のコードでミスがあったので、訂正させて下さい。 × Sheets("Sheet1").Copy Destination:=Sheets("Sheet11").Range("A1") ○ Sheets("Sheet1").Range("A1").Copy Destination:=Sheets("Sheet11").Range("A1") 余談ですが、#5Wendy02さま >#2のご指摘のレンジ・オブジェクトのコピーは、よいのか分かりません。 ご質問文に..コピー(移動でも可)..とありますよ。私も値の転記の方が良いかなとは思いますが。

yu-yake
質問者

補足

数百のシートで実際のシート名は漢字の名前です コピー(移動)したいセルデータは8個ですがどのように修正すればいいでしょうか?

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.6

#4です。 すいません。ミスがありました。 こぴぺをよんでなかった。。。 -------------------------------------------- Public i As Integer 'シートを一枚ずつ処理します。 Sub test() For i = 1 To 10 Sheets(i).Select Call こぴぺ() Next End Sub 'それぞれのシートで作業します。 Sub こぴぺ() Dim varT(10) As Variant Dim n As Integer '配列を作る varT(1) = Cells(1, 1).Value 'A1 varT(2) = Cells(4, 3).Value 'C4 varT(3) = Cells(4, 3).Value '修正 varT(4) = Cells(4, 3).Value '修正 varT(5) = Cells(4, 3).Value '修正 varT(6) = Cells(4, 3).Value '修正 varT(7) = Cells(4, 3).Value '修正 varT(8) = Cells(4, 3).Value '修正 varT(9) = Cells(4, 3).Value '修正 varT(10) = Cells(2, 2).Value 'B2 'Sheet11に移動して、Sheetごとのデータを横一列に貼り付け 'Sheet1は、1行目 'Sheet2は、2行目 '以下、Sheet10を、10行目としています。 Sheets(11).Select For n = 1 To 10 Cells(i, n) = varT(n) Next End Sub

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

シート間のセルの対応ルールがわかりせんので、ご自身で、書き込んでください。 必ず、一対一対応になっていないと、エラーメッセージが出るようにしてあります。 マクロのVBE画面で、以下のコードを、挿入-標準モジュールで、開いた画面に貼り付けるか、または、ThisWorkbookに貼り付けてください。 Sub TEST2() Dim CopyMoto As String Dim MotoData As Variant Dim CopySaki As String Dim CSakiData As Variant Dim MotoSheet As Worksheet Dim SakiSheet As Worksheet Dim i As Long, j As Long '設定してください CopyMoto = "A1,C4,B2" ←ここに書き込む CopySaki = "A1,B1,J1" ←ここに書き込む(最初の場所) ' Set SakiSheet = Sheet11  'コピー先 ' MotoData = Split(CopyMoto, ",") CSakiData = Split(CopySaki, ",") If UBound(MotoData) <> UBound(CSakiData) Then _  MsgBox "設定の数が違います。" & Chr(13) & "訂正してください", 16: Exit Sub For i = 1 To 10 'シートは順番に並んでいないくても可  For j = LBound(MotoData) To UBound(MotoData)  SakiSheet.Range(CSakiData(j)).Offset(i - 1).Value = _       Worksheets("Sheet" & i).Range(MotoData(j)).Value  Next j Next i End Sub #2のご指摘のレンジ・オブジェクトのコピーは、よいのか分かりません。レンジ・オブジェクトの中には、数式・書式・コメント・列幅・罫線などがありますが、この場合は、値のみにさせていただきます。書式だけでしたら、後で、Sheet11に、つけてください。

yu-yake
質問者

補足

Sub TEST2() 以下 End Subまでをコピー&ペーストし実行したら CopyMoto = "A1,C4,B2" ←ここに書き込む    ↑    ここのところで コンパイルエラー 構文エラー と出ます^^; わたしがかなりしょぼいものでなぜだかわかりません すいません

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.4

マクロが使えるなら、次の方法で一気に可能です。 念のため、エクセルブックをコピーして試してみてください。 前提条件  それぞれのシートで見るセルは同じ。    A1    C4    (中略で7セル)    B2  シート名は、sheet1とか。 線の下をはりつけて、質問文で省略されたセルを指定してください。 A列は1、B列は2、C列は3となり、(行,列)の順で並びます。C-4は、(4,3)と記入します。 コピーが終わったら、エクセルに戻って、ツール→マクロ→マクロの実行→ test() と選んでください。 ---------------------------------------------- Public i As Integer 'シートを一枚ずつ処理します。 Sub test() For i = 1 To 10 Sheets(i).Select Next End Sub 'それぞれのシートで作業します。 Sub こぴぺ() Dim varT(10) As Variant Dim n As Integer '配列を作る varT(1) = Cells(1, 1).Value 'A1 varT(2) = Cells(4, 3).Value 'C4 varT(3) = Cells(4, 3).Value '修正 varT(4) = Cells(4, 3).Value '修正 varT(5) = Cells(4, 3).Value '修正 varT(6) = Cells(4, 3).Value '修正 varT(7) = Cells(4, 3).Value '修正 varT(8) = Cells(4, 3).Value '修正 varT(9) = Cells(4, 3).Value '修正 varT(10) = Cells(2, 2).Value 'B2 'Sheet11に移動して、Sheetごとのデータを横一列に貼り付け 'Sheet1は、1行目 'Sheet2は、2行目 '以下、Sheet10を、10行目としています。 Sheets(11).Select For n = 1 To 10 Cells(i, n) = varT(n) Next End Sub

回答No.3

目的は、たくさんあるシート(表データ)を見栄え良く集計表にしたいって事でしょうか? たとえば、Sheet11が sheet1~10の集計表だとすると、sheet1~10に入力するたびにsheet11が変化(入力を反映)するように作らないと、何度も並べ替え作業が必要になりますね。 この場合は、各シートの参照必要部分を全てコピーして、sheet11へ移動して「リンク貼り付け」を行ってください。この方法はココで説明するより、HELPを参照してもらった方が良いかと。 で、張ったあと地味に並べ替え(それと、要らない部分を削除)るって方法しかないのでは・・・ sheet1からsheet10のデータはこれから先変更しないのですか?これ以上sheet1~10を変化させる必要が無いのであれば、リンク貼り付けではなく、そのままペーストして、上記同様の作業を行ってください。 一気に出来る方法については、下名も存じ上げません。すいません。 それぞれのsheetに項目名が入っているならならそれをキーワードにlookupを使うって言う方法ぐらいでしょうか・・・これも結構面倒ですが。 では・・・

yu-yake
質問者

補足

説明が足りずすいません 反映させなくてもいいし、これから先の変更もありません 今回限り必要なものですが実際のシートの数は数百でセルは8個ですのでなんとか一気にできないものかと・・・

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

シート間のセルの対応ルールがわかりません。 ・Sheet1のA-1のセルデータをSheet11のA-1にコピー...OK ・Sheet1のC-4のセルデータをSheet11のB-1にコピー...?? ・Sheet1のB-2のセルデータをSheet11のJ-1にコピー...?? マクロなら Sheets("Sheet1").Copy Destination:=Sheets("Sheet11").Range("A1") の記述でコピーができますが、、(#1の方の方法は値のみの転記ですね)

回答No.1

マクロで実行するのが一番ですよ。 「並び替えて」という条件がわからないのでコピーだけですが・・・ サンプルを提示しますね Sub test() 'サンプル シート1~3のセル(A1)の値をシート4のセル(A1~C1)ヘコピーする Worksheets("Sheet4").Cells(1, "A").Value = Worksheets("Sheet1").Cells(1, "A").Value Worksheets("Sheet4").Cells(1, "B").Value = Worksheets("Sheet2").Cells(1, "A").Value Worksheets("Sheet4").Cells(1, "C").Value = Worksheets("Sheet3").Cells(1, "A").Value End Sub マクロの操作方法は 「ツール」-「マクロ」-「マクロ」-マクロ名を入力して「作成ボタン」をクリック 詳しくはヘルプなどをお読み下さい。

yu-yake
質問者

補足

「並び替えて」は忘れてください 表現がややこしかったですね 実際のシートの数は数百でセルは8個ですからすべて打ち込むのは大変ですね

関連するQ&A