こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

Excel VBAでデータをコピーして、別シートに貼り付けるどうしたらいいのでしょうか。

Sheet1のセルA1からA4のデータをコピーして、Sheet2のC2からc5に貼り、次はSheet1のセルB1からB4のデータをコピーしてSheet2のC7からc10に貼りを500行ほど繰り返し(コピーするデータは、4行づつ横へ移動し、貼り付けるほうは4行づつ縦へ移動します。)
それが終わったら、今度はB列、c列と100列ほど同じ操作を繰り返します。

いろいろな方法を試しましたが、なかなかうまくいきません。
どなたか教えていただけませんでしょうか。よろしくお願いいたします。

投稿日時 - 2011-08-09 17:17:34

QNo.6931991

すぐに回答ほしいです

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

質問文で途中から、質問で言っていることがよくわからない
ーー
下記でSheet1にテストデータを作る
Sub test02()
k = 1
For j = 1 To 256
For i = 1 To 4
Cells(i, j) = k
k = k + 1
Next i
Next j
End Sub
ーー
標準モジュールに
Sub test01()
Application.ScreenUpdating = False
Dim sh1, sh2
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
k = 2
For i = 1 To 100 Step 4
For j = 1 To 256
sh1.Range(sh1.Cells(i, j), sh1.Cells(i + 3, j)).Copy sh2.Cells(k, "c")
k = k + 5
Next j
Next i
Application.ScreenUpdating = False
End Sub
で実行すると
Sheet2のC2以下
1
2
3
4

5
6
・・略
1020

1021
1022
1023
1024
のようになる。
C列は4つの値を貼り付けて、1行あけてよいのですね。
ーーーー
>500行ほど繰り返し
の意味と
>それが終わったら、今度はB列、c列と100列ほど同じ操作を繰り返します
とはどのシートのことを言うのか。
それまでと、後半はどうも路線が違うように感じたが。
ーー
あとは、質問者で適当に修正・訂正するか、質問で言いたいことを補足したらどうです。

投稿日時 - 2011-08-09 18:56:31

補足

ありがとうございます!ありがとうございます<(_ _)> わかりにくい質問なのに答えてくださって感謝します!

そうです!前半はこういうことです!


後半の質問、すみません…自分で読み返してもヘンでした。いいかげんわからなくって、半べそでやってたものですから、行も列もごっちゃになってました。

修正させてください。

Sheet1にはもともと、A1からA4、一行あけてA6からA9、一行あけてA10からA13と、500行ほどつづいていて(B列以降も同じ)、6行目から9行目まではSheet3へコピー(位置はSheet2と同じ)。10行目から13行目は、Sheet2のD2からD5(C列と同じ感じで)、15行目から18行目はSheet3へと繰り返したいです。

これで、わかりますか?

よろしくお願いします。

投稿日時 - 2011-08-09 23:46:51

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>もっともっと学ばないといけませんね。何冊かの本を読んだのですが、
>本の例題とかはやってて、なんとなく理解できるのですが、
ひたすら、問題を解いてもよいのでは?

>どういう勉強の仕方をすると、一番よいのでしょうか。
VBA挫折してるんで、、、どうするとよいのでしょうかね?
当方、マクロの自動記録でほとんど対処してます。
そこで、ちょっといじるだけです。IF構文やFor~nextの繰り返し構文程度しか使えませんが。

>(すみません、質問の内容と違うところへ行ってしまって…)
新たにスレッドを立てて質問したほうが広く回答が得られます

投稿日時 - 2011-08-11 06:43:55

お礼

いつも朝早く、ありがとうございます。
いろいろご回答いただき、感謝いたします。

そうですね、今までの問題、もう一度やってみようかと思います。

ちょっといじる、いじり加減がうまくいかないんです(^_^;)
なかなか思うように繰り返してくれなかったりして…

当初の質問とは違うことまで、親切にご回答くださり、改めて感謝いたします。
ありがとうございました。

またお世話になることもあるかもしれませんが、その時もどうぞよろしくお願いいたします。

投稿日時 - 2011-08-11 23:43:59

ANo.2

対象が文字列として数式+マクロ(自動記録程度ですが)
Sub Macro1()
  Dim n As Byte
  
  'Sheet2!C2セルに =IF(MOD(ROW(A1),5)=0,"",INDEX(Sheet1!$A$1:$CV$4,MOD(ROW(A1),5),INT((ROW(A1)+4)/5)))
  
  n = 1
  Sheets("Sheet" & n + 1).Select
  Range("C2:C500").FormulaR1C1 = _
     "=IF(MOD(ROW(R[-1]C[-2]),5)=0,"""",INDEX(Sheet1!R" & n * 5 - 4 & "C1:R" & n * 5 - 1 & "C100,MOD(ROW(R[-1]C[-2]),5),INT((ROW(R[-1]C[-2])+4)/5)))&"""""

  n = 2
  Sheets("Sheet" & n + 1).Select
  Range("C2:C500").FormulaR1C1 = _
     "=IF(MOD(ROW(R[-1]C[-2]),5)=0,"""",INDEX(Sheet1!R" & n * 5 - 4 & "C1:R" & n * 5 - 1 & "C100,MOD(ROW(R[-1]C[-2]),5),INT((ROW(R[-1]C[-2])+4)/5)))&"""""
  n = 3
  Sheets("Sheet" & n + 1).Select
  Range("C2:C500").FormulaR1C1 = _
     "=IF(MOD(ROW(R[-1]C[-2]),5)=0,"""",INDEX(Sheet1!R" & n * 5 - 4 & "C1:R" & n * 5 - 1 & "C100,MOD(ROW(R[-1]C[-2]),5),INT((ROW(R[-1]C[-2])+4)/5)))&"""""

End Sub

範囲を修正したり、繰り返し構文を使ったり、数式のままなので値化したりする必要があると思います

投稿日時 - 2011-08-10 07:18:22

お礼

朝早くからご回答いただき、ありがとうございました。
最初から、最後まで、コードを明記くださって、ありがとうございます <(_ _)>

実行してみて、いろいろさわってみてますが、こういうコードの書き方もあるのですね。セルの表現の仕方、シートの選び方等いろいろあって、勉強になります。

もっともっと学ばないといけませんね。何冊かの本を読んだのですが、本の例題とかはやってて、なんとなく理解できるのですが、自分のやりたい事をコードにしようとすると、いろいろ組み合わせなければいけなくなり、その組み合わせ方がよくないのか、エラーばかりで…

どういう勉強の仕方をすると、一番よいのでしょうか。
(すみません、質問の内容と違うところへ行ってしまって…)

アドバイスがあれば、ぜひお願いします。

投稿日時 - 2011-08-10 23:46:52

あなたにオススメの質問