アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。3日前からマクロを勉強し始めました。
A列に有るデータをC列に3回コピーしていきたくて
下記のようなものを仮に組んでみました。


Worksheets("Sheet1").Range("A1").Copy
Destination:=Worksheets("Sheet1").Range("C1")
Worksheets("Sheet1").Range("A1").Copy
Destination:=Worksheets("Sheet1").Range("C2")
Worksheets("Sheet1").Range("A1").Copy
Destination:=Worksheets("Sheet1").Range("C3")

Worksheets("Sheet1").Range("A2").Copy
Destination:=Worksheets("Sheet1").Range("C4")
Worksheets("Sheet1").Range("A2").Copy
Destination:=Worksheets("Sheet1").Range("C5")
Worksheets("Sheet1").Range("A2").Copy
Destination:=Worksheets("Sheet1").Range("C6")



この作業をA列が空白になるまでという条件で
( Do while を使うのでしょうか・・)
続けたいのですが、
どのようにマクロを組めばよいのかわかりません。何となか変数を使うらしいということまではわかったのですが。。
どなたかご教示いただけると助かります。
よろしくお願いします。

質問者からの補足コメント

  • すごいです!できました!ありがとうございます!ただ、この式はどうやって導いたのですか⁇数学は高校の時苦手だったもので。。
    → (line-1)×3+1

      補足日時:2015/10/14 14:19

A 回答 (2件)

#1です。


>この式はどうやって導いたのですか⁇

A列の1行(lineの値) を C列の1行へコピー
A列の2行(lineの値) を C列の4行へコピー
A列の3行(lineの値) を C列の7行へコピー
となっています。
この関係から
lineの値から1を引いて、それを3倍し、1を加える と良いことが判ります。

もしくは、
lineの値を3倍し、それから2を引いても良いです。(line*3-2)
その場合は、
line*3-2  ・・・C列の1回目のコピー
line*3-1  ・・・C列の2回目のコピー
line*3   ・・・C列の3回目のコピー
のようになります。

これらは
A列の1行(lineの値) -> C列の1行
A列の2行(lineの値) -> C列の4行
A列の3行(lineの値) -> C列の7行
のように、いくつかサンプルをとって、試行錯誤すれば、規則が導けます。
(多少、慣れも必要ですが、何回かやれば要領がつかめます)
    • good
    • 0

以下のようにしてください。


マクロで組む場合は、RangeプロパティではなくCellsプロパティが便利です。
Range("C4")は 列:C 行:4 です。これは
Cells(4,3)出表現します。 行:4  列:3(C列)
Cellsプロパティは、Cells(行,列)なので、注意してください。

Public Sub sample()
Dim line As Long '行番号
line = 1
Do While Worksheets("Sheet1").Cells(line, 1).Value <> ""
'1回目のコピー(A1->C1相当)
Worksheets("Sheet1").Cells(line, 1).Copy _
Destination:=Worksheets("Sheet1").Cells((line - 1) * 3 + 1, 3)

'2回目のコピー(A1->C2相当)
Worksheets("Sheet1").Cells(line, 1).Copy _
Destination:=Worksheets("Sheet1").Cells((line - 1) * 3 + 2, 3)

'3回目のコピー(A1->C3相当)
Worksheets("Sheet1").Cells(line, 1).Copy _
Destination:=Worksheets("Sheet1").Cells((line - 1) * 3 + 3, 3)

line = line + 1
Loop
End Sub

不明点は、補足してください。
    • good
    • 0

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