• ベストアンサー

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

データは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

  • EXCELシートのコピー移動について

    (1)EXCELシートのコピー移動について AとういうBOOKの中のシート1をBというBOOKへシートのコピー移動はできるのですが例えばBOOKA,B,C,D,EとBOOKを5つひらいておいてAとういうBOOKの中のシート1をBのBOOKへコピーしたりC,D,Eへもコピーすることは可能でしょうか?勝手な考えですがコピー先を選択する参照ボタンなどがあるとわかりやすいと思ったのですが・・・誰か複数のBOOKにシートのコピーができる方法を教えてください。 (2)作成したデータとグラフを移動する方法について データのコピー移動は問題なくできるのですがグラフが移動されなくて困っています。 よろしくお願いいたします。

  • エクセル 複数シートの値のみコピーで

    こんにちは いつもお世話になっています。 先日、選択した複数のシートを新しいブックに値だけコピーするマクロをこちらで教えていただきました。(関数が入ったシートなのでタブの右クリックからの新規ブックへのコピーでは関数がコピーされてしまうので) 今回、このマクロで失敗するシートがあったので原因を教えてください。 値だけコピーするマクロは以下です。 Sub 値コピー() Dim WS As Worksheet ActiveWindow.SelectedSheets.Copy For Each WS In ActiveWorkbook.Worksheets With WS.Cells .Copy .PasteSpecial Paste:=xlPasteValues End With Next Application.CutCopyMode = False End Sub 失敗するシートにはつぎの関数があります。 A1セルに=REPLACE(CELL("filename",A1),1,FIND(".xlsx]",CELL("filename",A1))+LEN(".xlsx]")-1,) B3セルに=IF(COUNTIF(Sheet2!$1:$1,$A$1),IF(ROWS($3:3)>COUNTIF(OFFSET(Sheet1!$J:$J,,MATCH($A$1&"クラス",Sheet1!$J$1:$N$1,0)-1),B$2),"",COUNTIFS(OFFSET(Sheet1!$C:$C,,MATCH($A$1,Sheet1!$C$1:$G$1,0)-1),">"&INDEX(Sheet1!$C:$G,MATCH(B$2&"☆"&ROWS($3:3),OFFSET(Sheet2!$A:$A,,MATCH($A$1,Sheet2!$A$1:$E$1,0)-1),0),MATCH($A$1,Sheet1!$C$1:$G$1,0)),OFFSET(Sheet1!$J:$J,,MATCH($A$1&"クラス",Sheet1!$J$1:$N$1,0)-1),B$2)+1&"位 "&INDEX(Sheet1!$B:$B,MATCH(B$2&"☆"&ROWS($3:3),OFFSET(Sheet2!$A:$A,,MATCH($A$1,Sheet2!$A$1:$E$1,0)-1),0))&" "&INDEX(Sheet1!$C:$G,MATCH(B$2&"☆"&ROWS($3:3),OFFSET(Sheet2!$A:$A,,MATCH($A$1,Sheet2!$A$1:$E$1,0)-1),0),MATCH($A$1,Sheet1!$C$1:$G$1,0))&"点"),"") 別シートのデータから条件に合うものを引き出す関数です。 これらの関数もおしえていただいたもので、まだ理解できていませんので、説明不十分で申し訳ありません。 これらの関数があるシートではなぜ上記のマクロが失敗するのでしょうか。 もちろん、シートのデータを選択、コピーして新規ブックに値のみコピーはできます。 上記のような関数があるシートでも複数選択シートでの値のみコピーができるマクロを教えていただけないでしょうか。 情報不足がありましたら、教えてください。 よろしくお願いします。 エクセル2007

  • エクセルのsheet間コピー(空間あり)について

    エクセルのsheetをまたいでのコピーに苦戦しています。 ●例 sheet1 A,1に「1111」 B,1に「あいお」     A,2に「2222」 B,2に「空欄」     A,3に「空欄」 B,3に「かいこ」     A,4に「3333」 B,4に「空欄」 とあったデータを sheet2 A,1に「1111」、B,1に「あいお」、C,1に「2222」、D,1に「空欄」と、     A,2に「空欄」、B,2に「かいこ」、C,2に「3333」、D,2に「空欄」と コピー(自動転記)させ、それを下部へ「+」規則性をもってコピーさせたいのです。 ご指導のほどよろしくお願いします。

  • エクセルでシートを「移動またはコピー」した場合。

    説明が難しいので記号で説明させていただきます。 ブックA・ブックBを開いて、ブックAのシート(1)をブックBに「移動またはコピー」でコピーします。ブックBに新たにできたシート(1)について、もとのブックAのセルがなんらかの別セルを参照していた場合、そのコピーされたブックBのセルには[A.xls]の文字が入ってしまいます。ブックBのみで使用する場合、もちろん[A.xls]の文字は邪魔になるので、現在はいちいちその文字を削除して使用しています。なにかいい方法が有りますか?

  • エクセルで別々のシート同士の参照とコピーのしかたについてお聞きします

    今、シート1のA1、A2、A3にデータが入っているとします(列データ)。これをシート2のA4、B4、C4にそれぞれコピーしたい(行データ)とします。つまり、A1→A4、A2→B4、A3→C4 にコピーしたいわけです。(縦のデータを横にコピーするとでも言いましょうか) 次のようにしてみました。 (1) A4に=シート1!A1と入力する。 (2) A4をコピペでB4、C4にコピーする すると、B4、C4の参照先がA2、A3にならず、B1、C1になってしまいます。 つまり、B4=シート1!B1 などとなってしまうのです。 いまはいちいち手で修正しています。 実際は1月から12月までのデータを20支店にわたって上のようにコピペするのでちょっとたいへんな手作業です。 「形式を選択して貼り付け」>行列を入れ替える、でやってみましたがうまくいきません。 オートフィルみたいにささっとできる方法はないでしょうか? よろしくお願いいたします。

  • エクセルで規則性のあるシート間コピーについて

    QNo.3516944にて質問しましたが、ちょっと説明不足もありましたので再度投稿します。 ●例2 sheet1   A   B   C   D   E 1 a a a    c c c  2    b b b    d d d e e e 3 a'a'a'    c'c'c' 4     b'b'b'     d'd'd' e'e'e' とあったデータを sheet2    A    B     C     D    E 1 a a a  b b b  c c c  d d d  e e e 2 a'a'a'  b'b'b'  c'c'c'  d'd'd'  e'e'e'     3 a"a"a"  b"b"b"  c"c"c"  d"d"d"  e"e"e"     4 以下同様に下にコピーしたい  数式では       A        B       C       D        E 1 =Sheet1!A1 =Sheet1!B2 =Sheet1!C1 =Sheet1!D2 =Sheet1!E2 2 =Sheet1!A3 =Sheet1!B4 =Sheet1!C3 =Sheet1!D4 =Sheet1!E4 3 =Sheet1!A5 =Sheet1!B6 =Sheet1!C5 =Sheet1!D6 =Sheet1!E6    4 =Sheet1!A7 =Sheet1!B8 =Sheet1!C7 =Sheet1!D8 =Sheet1!E8 この規則性を 以下同様に「+」でコピーしたい  ご指導のほどよろしくお願いします。罫線がうまく表現できないのでわかりづらくて申し訳ないです。

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • エクセルでのシート移動について

    とあるフォルダに「A」と「B」言うエクセルのいシートがあります。 AのシートをBに移動したいのですが、ファイルを開かないで移動する方法はあるのでしょうか?

  • エクセルでのデータ移動

    こんにちは いつもお世話になっています エクセルでのデータ移動について教えてください ファイルAのAシートのデータをファイルBのBシートに移動したいのです。以下のようにBシートには「名前」が入っていますがAシートの「名前」と一致していません。 Aシート 名前 点A 点B 点C 点D 点E aaa   a   b   c   d   e bbb   f   g   h   i   j ccc   k   l   m   n   o Bシート   A   B    C    D    E    F 1 名前   点A  点B  点C  点D  点E 2 bbb 3 aaa 4 xxx BシートのセルB2に =VLOOKUP($A$2,[ファイルA.xls]Aシート!$A$2:$F$6,COLUMN(B2)) と入力しました。これを右へフィルできましたが、縦にコピーすると失敗します。絶対参照にしておかないと2行目の横へのコピーで失敗します。初心者質問で恐縮ですが、解決策をおしえてください。

  • ExcelVBAで複数セルを別シートに貼り付けたい

    Excel VBAでデータをコピーして、別シートに貼り付けるどうしたらいいのでしょうか。 Sheet1のセルA1からA4のデータをコピーして、Sheet2のC2からc5に貼り、次はSheet1のセルB1からB4のデータをコピーしてSheet2のC7からc10に貼りを500行ほど繰り返し(コピーするデータは、4行づつ横へ移動し、貼り付けるほうは4行づつ縦へ移動します。) それが終わったら、今度はB列、c列と100列ほど同じ操作を繰り返します。 いろいろな方法を試しましたが、なかなかうまくいきません。 どなたか教えていただけませんでしょうか。よろしくお願いいたします。

専門家に質問してみよう