プロが教えるわが家の防犯対策術!

Excelのマクロを使ってワークシート1にワークシート2のセルの値をコピーするマクロを作りたいと思っています。

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

わかりにくいかもしれませんが、よろしくお願いします。

A 回答 (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
    • good
    • 0

こんばんは!


こんな感じですかね?

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

この回答への補足

ありがとうございます!
ちなみに汎用性を利かせるために、すべての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を変更するだけでいいじゃないですか。
できませんか?

補足日時:2010/06/11 23:58
    • good
    • 0

ちょっと無理やりだけど・・



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
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!