こんにちは。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 を使うのでしょうか・・)
続けたいのですが、
どのようにマクロを組めばよいのかわかりません。何となか変数を使うらしいということまではわかったのですが。。
どなたかご教示いただけると助かります。
よろしくお願いします。
No.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行
のように、いくつかサンプルをとって、試行錯誤すれば、規則が導けます。
(多少、慣れも必要ですが、何回かやれば要領がつかめます)
No.1
- 回答日時:
以下のようにしてください。
マクロで組む場合は、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
不明点は、補足してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) VBA リスト表示していますが 3 2023/05/18 12:12
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
VBA 何かしら文字が入っていたら
-
Worksheets メソッドは失敗しま...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAを用いて条件付きの平均値、...
-
セルに値が入っていた時の処理
-
エクセル 2つの表の並べ替え
-
VBAでエラーインジケーターにつ...
-
[ASP+SQL]絞込み済みのレコード...
-
rowsとcolsの意味
-
C#で複数列をもつデータソース...
-
Excel マクロ VBA 別シートのセ...
-
IIF関数の使い方
-
エクセル VBA ユーザーフォー...
-
【VBA】2つのシートの値を比較...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
VBAのコードを教えてください
-
VBAを使って検索したセルをコピ...
-
B列の最終行までA列をオート...
-
エクセルvbaについて
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
VBA UserFormからの転記で
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
VBA 何かしら文字が入っていたら
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
エクセルVBAにて =A1=B1とすれ...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
VBマクロ 色の付いたセルを...
-
VBAで指定範囲内の空白セルを左...
おすすめ情報
すごいです!できました!ありがとうございます!ただ、この式はどうやって導いたのですか⁇数学は高校の時苦手だったもので。。
→ (line-1)×3+1