- ベストアンサー
Worksheet転記の方法についての質問
- Worksheetのデータを転記する方法について教えてください。
- 現在のコードではA12からJ12までのデータを転記することができますが、順番に右に転記する方法が分かりません。
- 正しい方法や他のアプローチがあれば教えていただきたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こーゆー事? Sub Test() Dim A As Range Dim I As Range Dim J As Long Set A = Worksheets("Sheet1").[A12:J34] For Each I In A J = J + 1 Worksheets("Sheet2").Cells(1,J).Value = I.value Next I End Sub シート2は1行目しか使わず、横に横にズラズラッと並べていくという事ですよね? ところで、変数名は、もう少し工夫して、パッと見てすぐに何の変数だか分かるような名前を付けた方が良いです。
その他の回答 (4)
- yaritsusozai
- ベストアンサー率59% (50/84)
!失礼、変なところで改行されてしまいました。 Set A=の後の改行は無しで。
お礼
コピペしたときに変な改行は入ってなかったのでそのまま実行できました。 この度はありがとうございました。
- yaritsusozai
- ベストアンサー率59% (50/84)
何故、指定範囲のデータを「わざわざ1つ1つ」FOR~NEXTループを使って取り出しているのか、理由が分かりませんが…。 転記したいだけなら、 Worksheets("Sheet1").[A12:J34].Copy Worksheets("Sheet2").[A1].PasteSpecial で出来ますが、そういう事ではないんでしょうか?
お礼
意味不明な質問に対して御回答頂きありがとうございます。
補足
ご連絡が遅くなり申し分けありません。 説明の仕方が下手で申し分けありませんでした。 先の回答者様の補足にもう少し詳しく書かせて頂きました。 単純に全ての値の転記ではなく、シート1のA12はシート2のA1 シート1のA13はシート2のK1としていきたいと考えております。 ご呈示頂いた方法は全てのコピーですので望んでいたものと違っております。 単純転記ではありませんのでご了承ください。 説明不足が招いた結果だと思いますが、今一度ご教授頂ければ幸いです。
シート1のA12~J34のデータをシート2のA1~J23に転記したい。という趣旨と解釈しました。 作られたコードを修正するとすると、Sub test()のようになります。ワークシート2のfor~nextにFor i = 12 To 34を追加し、 Worksheets(2).Cells(i - 11, j) = A(i, j)とするだけです。 変数Aを使用する事なっていますが、今回のケースでは変数は無くても転記は可能で、sub test2()のようになります。 変数の宣言を配列Aしかしていませんが、変数i,jも必ず宣言するようにしましょう。 Sub test() Dim A(34, 10) As Integer Dim i, j As long For i = 12 To 34 '大文字なのは小文字にしてもなぜか治らなくなったからです For j = 1 To 10 A(i, j) = Worksheets(1).Cells(i, j) Next j '初心者なのでどのnextか分かるように一応書いています Next i For i = 12 To 34 For j = 1 To 10 Worksheets(2).Cells(i - 11, j) = A(i, j) Next j Next End Sub Sub test2() Dim i, j As long For i = 12 To 34 '大文字なのは小文字にしてもなぜか治らなくなったからです For j = 1 To 10 Worksheets(2).Cells(i - 11, j) = Worksheets(1).Cells(i, j).Value Next j '初心者なのでどのnextか分かるように一応書いています Next i End Sub
お礼
意味不明な質問に対して御回答頂きありがとうございます。
補足
ご連絡が遅くなり申し分けありません。 説明の仕方が下手で申し分けありませんでした。 先の回答者様の補足にもう少し詳しく書かせて頂きました。 単純に全ての値の転記ではなく、シート1のA12はシート2のA1 シート1のA13はシート2のK1としていきたいと考えております。 ご呈示頂いた方法は全てのコピーですので望んでいたものと違っております。説明不足が招いた結果だと思いますが、今一度ご教授頂ければ幸いです。
- karorumon
- ベストアンサー率26% (25/94)
んー・・・ Range("B5").Select というのと、 Cells(5, 2).Select というのは同じ場所を指しています。 Cells(行,列)という意味です。 なので、縦にどんどん転記していきたいのなら、行をカウントアップすれば良いですし、 列をどんどんずらして右に転記していきたいのなら、列をカウントアップすれば良いと思います。 ちょっとコードの見方がわかりにくいので、 実際どういった動作をさせたいのか 文章にて書いていただけると助かります。(A1にあるものをB1に転記して・・・など)
お礼
意味不明な質問に対して御回答頂きありがとうございます。
補足
ご連絡が遅くなり申し分けありません。 説明の仕方が下手で申し分けありませんでした。 シート1のA12~J12をシート2のA1~J1へ シート1のA13~J13をシート2のK1~T1へ シート1のA14~J14をシート2のU1~AD1へ 細かく書くと(左側シート1、右側シート2) A12はA1 B12はB1 C12はC1 D12はD1 繰り返しで J12はJ1 A13はK1 B13はL1 C13はM1 以下同様にシート1はA34~J34までです。 シート2はどこまで行くかわかりませんがXFDまであるので入るのでは無いかと思っています。 非常にわかりにくい説明で申し訳ありませんが、ご理解頂ければ幸いです。
お礼
希望通りの実行結果になりました。 説明不足で申し分けありませんでした。 後は実行の度に最終行に追加ですが、こちらは頑張ってみます。 変数名についても考えて行きたいと思います。 この度はありがとうございました。