• ベストアンサー

Excelのマクロを使ってワークシート1にワークシート2のセルの値をコ

Excelのマクロを使ってワークシート1にワークシート2のセルの値をコピーするマクロを作りたいと思っています。 例えば、ワークシート2のA1~A30のセルには1~30の値が順に入っているとします。 それをA1から3の倍数分、つまりA1,A3,A6,A9,・・・,A27,A30の値を ワークシート1のA1~A11のセルに自動で挿入してくれるマクロってどう作ればいいのでしょうか? わかりにくいかもしれませんが、よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です! 補足の件ですが・・・ 実は定義しても良かったのですが、 Dim ○○ as ・・・ と定義してもそのまま入力してもあまり変わらないかな?と思って 前回のように単純にやってみました。 Sheet名が変更されても、ある程度汎用性があったほうが良いということですかね? もしそうであれば、仮にSheet1のSheet名が「あああ」・Sheet2が「いいい」 とすると Sub test() Dim i As Long Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("あああ") Set sh2 = Worksheets("いいい") For i = 2 To sh2.Cells(Rows.Count, 1).End(xlUp).Row sh1.Cells(1, 1) = sh2.Cells(1, 1) sh1.Cells(i, 1) = sh2.Cells((i - 1) * 3, 1) Next i End Sub というような感じでしょうか? 的外れならごめんなさいね。m(__)m

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! こんな感じですかね? Sub test() Dim i As Long For i = 2 To Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row Worksheets("sheet1").Cells(1, 1) = Worksheets("sheet2").Cells(1, 1) Worksheets("sheet1").Cells(i, 1) = Worksheets("sheet2").Cells((i - 1) * 3, 1) Next i End Sub 他に良い方法があれば読み流してくださいね。m(__)m

avenew
質問者

補足

ありがとうございます! ちなみに汎用性を利かせるために、すべてのsheet1,sheet2をいちいち変更するのはめんどうなので、何か変数に置き換える事は可能ですか? C言語風に書きますと(これは間違っているのでしょうが、 SHEET1=sheet1 SHEET2=sheet2 For i = 2 To Worksheets("SHEET2").Cells(Rows.Count, 1).End(xlUp).Row Worksheets("SHEET1").Cells(1, 1) = Worksheets("SHEET2").Cells(1, 1) Worksheets("SHEET1").Cells(i, 1) = Worksheets("SHEET2").Cells((i - 1) * 3, 1) みたいな感じです。 これだと、違う名前のワークシートでもSHEET1,SHEET2を変更するだけでいいじゃないですか。 できませんか?

  • sumer45
  • ベストアンサー率17% (52/294)
回答No.2

ちょっと無理やりだけど・・ Sub test() Dim i As Long Dim Ws1 As Worksheet Dim Ws2 As Worksheet Dim 配列(1 To 11) As Variant Set Ws1 = Worksheets("Sheet1") Set Ws2 = Worksheets("Sheet2") 配列(1) = Ws2.Cells(1, 1).Value For i = 1 To 10 配列(i + 1) = Ws2.Cells(i * 3, 1).Value Next For i = 1 To 11 Ws1.Cells(i, 1).Value = 配列(i) Next End Sub

  • fujiponxx
  • ベストアンサー率32% (186/580)
回答No.1

マクロの記録でつくればいいと思います。