
複数回コピーしながら移動するマクロについて教えて下さい。
下のようなVBAで指定回数コピーし別シートへペーストしながら、
下へ移動していくマクロを作ろうとしています。
例えば、
シート1のA列に
"りんご"
"みかん"
"いちご"
シート2のB列に
"東京"
"大阪"
"東京"
"大阪"
"東京"
"大阪"
とすでに入力があって、
下記のようにシート2のA列に果物の名前を都道府県分コピーしていくマクロを作りたいと考えています。
<最終結果>
シート2
A列
"りんご" "東京"
"りんご" "大阪"
"みかん" "東京"
"みかん" "大阪"
"いちご" "東京"
"いちご" "大阪"
果物と都道府県の数は都度変わるのでそれぞれを変数にしたいのですが、
2つの変数を組み合わせて下記のように作ってみたのですが
うまく動きませんでした。
どこがまずくてどのようにすれば上記の<最終結果>ができあがるのか
ご教示いただけないでしょうか。
Sub test()
Dim f As Long
Dim p As Long
Dim i As Long
Dim j As Long
Dim LRow As Long
f = Sheets(1).Range("B1").Value '果物の数
p = Sheets(2).Range("C1").Value '都道府県の数
LRow = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row '果物をシート2へコピーする場所
Sheets(1).Cells(2, 1).Copy _
Sheets(2).Range(Cells(2, 1), Cells(1 + p, 1)) '1番目の果物だけコピペ
For i = 1 To f
For j = 1 To p
Sheets(1).Cells(2, 1).Offset(i, 0).Copy _
Sheets(2).Range(Cells(LRow, 1), Cells(LRow + j, 1))
Next
Next
End Sub
よろしくお願い致します。
No.5ベストアンサー
- 回答日時:
こんな感じではいかがですか?
Sub test2()
Dim f As Long
Dim p As Long
Dim i As Long
Dim Target As Range
f = Sheets(1).Range("B1").Value '果物の数
p = Sheets(2).Range("C1").Value '都道府県の数
Set Target = Sheets(2).Range("A2").Resize(p)
For i = 1 To f
Target.Offset(p * (i - 1)).Value = Sheets(1).Cells(i + 1, 1).Value
Next
End Sub
最後の部分は、こちらの方が分かりやすいかな? 大差ないけど。
For i = 0 To f - 1
Target.Offset(p * i).Value = Sheets(1).Range("A2").Offset(i).Value
Next
大変ありがとうございます!!
早速試させていただきましたところ、
果物が都道府県分ちゃんとコピーできました!
一瞬でした。
こんな短いコードでできるのですね。
本当に本当に助かりました!
ありがとうございます
No.4
- 回答日時:
こんにちは
説明文と例示の内容が食い違っている(特に個数、回数に関して)のでよくわかりませんが・・・
普通に考えれば、この手の処理は『「りんご、みかん、いちご」という項目(項目数可変)と「東京、大阪」という項目(項目数可変)を与えて、全ての組み合わせを列挙させる』といった感じの処理になるのではないかと思うのですが、ご質問ではシート2にすでに重複して「東京、大阪、東京、大阪・・・」のように記されているのが奇異に感じられます。
一方で、どうやら繰り返しの個数(=n)が与えられているらしいので、そちらの条件を正とするなら、シート2のB列の内容は無関係となって、『シート1の各項目をn回ずつシート2に記入する』という処理に帰結しそうだし・・・
どっちなんでしょうね?
ありがとうございます。
自分の中で整理できておらず、申し訳ないです。
皆様からご指摘いただきまして自分なりに再度整理してみました。
まず、下記リストが存在します。
・果物リスト(りんご、みかん、いちご)
・都道府県リスト(東京、大阪)
果物は りんご、みかん、いちごをそれぞれ都道府県分コピー(1列)
都道府県は 全都道府県を 果物分コピー(1列)
その2つの列を合わせて、最終的に最初の質問の<最終結果>のような形になればよいのではないかと思い至りました。
ありがとうございます!!
No.3
- 回答日時:
No.2です。
下記について再確認です。
>実際のデータは
>シート1 A列138個
>シート2 B列53個
質問文の例とは逆に、シート1 A列のほうが個数が多いのですか?
だったら、1個ずつ貼り付けていくのですよね?
>シート2 B列の個数をnとすると、
僕がA列の個数のn倍がB列の個数と回答したのに対して、『そうです』と返答されています。
一方で、シート2 B列の個数がn と書かれています。
どちらが正解でしょうか?
説明がおかしくて申し訳ありません。
シート1の数とシート2の数は時と場合により
増えたり減ったりするので、どちらが多いとは言えないリストになっています。
正しいのは、
シート2 B列の個数をnとすると、
A列1行目の文字をn回ずつ貼り付け、その下にA列2行目の文字をn回貼り付けです。
よろしくお願い致します。
No.2
- 回答日時:
法則性について確認させてください。
シート1 A列の個数のn倍がシート2 B列の個数になっているとして、シート1 A列の語句を上から順にn回ずつ貼り付けていけばよいということでしょうか?(シート2 B列の語句自体は影響しない?)
質問文の場合を例にとると、
シート1 A列の個数 = 3個
シート2 B列の個数 = 6個
n倍 = 2倍
なので、A列の語句を2回ずつ貼り付ける。
そうです!
シートAの語句を上から順にn回ずつ貼り付けていきたいのです。
質問文の場合は2倍ですが、実際のデータは
シート1 A列138個
シート2 B列53個
のように多数かつ中途半端な数字になっています。
シート2 B列の個数をnとすると、
A列1行目の文字をn回ずつ貼り付け、その下にA列2行目の文字をn回貼り付け・・としていきたいのです。
説明下手で本当に申し訳ないです。
ありがとうございます。
No.1
- 回答日時:
でもこれって前提がおかしくない?
シート2のB列に都道府県名があるのにも関わらず都道府県の数を指定するなら、余分になってしまうデータは上書きで消しちゃうの?
シート1のA・B列にデータがあってC・D列にそれぞれの指定数を入力し、結果をシート2に書き出すってならまだわかるのだけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) ワークシートごとに計算結果 2 2022/04/30 22:00
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCELマクロで、シート間でのコピーペーストを繰り返す方法
Excel(エクセル)
-
繰り返し1行~28行までを順順にコピーする方法
Visual Basic(VBA)
-
エクセルVBA 指定範囲を指定回数繰り返しコピー
Excel(エクセル)
-
-
4
マクロ自動コピペ 貼り付ける場所が変わる場合
その他(Microsoft Office)
-
5
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
6
excelで任意のセルを指定回数コピーペーストする方法を教えてください
Excel(エクセル)
-
7
マクロで貼り付け位置を可変させる方法が知りたいです。
Excel(エクセル)
-
8
一行おきに貼り付ける 可能でしょうか
Visual Basic(VBA)
-
9
一行おきにコピーするマクロが知りたい
Excel(エクセル)
-
10
Excel で行を指定回数だけコピーしたい
Excel(エクセル)
-
11
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
12
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
13
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
14
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
15
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
16
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
17
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
18
エクセルVBAで、行コピーを複数行にペーストする方法
Excel(エクセル)
-
19
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
20
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【条件付き書式】countifsで複...
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
エクセルで、チェックボックス...
-
ExcelのVlookup関数の制限について
-
シートをまたぐ条件付き書式に...
-
エクセルの保護で、列の表示や...
-
エクセルVBAで、ある文字を含ん...
-
エクセルVBA 列検索後に該当デ...
-
Excel複数シートにあるデータを...
-
Excel 2段組み
-
ある数値に対して、値を返す数...
-
VLOOKアップ関数の結果の...
-
Excel の複数シートの列幅を同...
-
【エクセル】1列のデータを交...
-
Excelで全てのシートに一気に列...
-
【マクロ】対象データを別シー...
-
エクセルVBA 行追加時に自...
-
スプレッドシートでindexとIMPO...
-
SUMPRODUCTにて別シートのデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
【条件付き書式】countifsで複...
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
VBAで繰り返しコピーしながら下...
-
シートをまたぐ条件付き書式に...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
Excelに自動で行の増減をしたい...
-
【VBA】複数のシートの指定した...
-
【エクセル】1列のデータを交...
-
SUMPRODUCTにて別シートのデー...
-
Excel 2段組み
-
エクセル マクロ 標準モジュー...
-
エクセルの列の限界は255列以上...
-
excel 複数のシートの同じ場所...
-
エクセルVBAで、ある文字を含ん...
-
VLOOKアップ関数の結果の...
おすすめ情報
ありがとうございます!
都道府県の数を指定したのは、
果物の数を都道府県の数だけコピーしたいからなんです。
りんごをシート2のA列に下2回(2セル)コピーして、
次にみかんをシート2のりんごがコピーされている一番最後のセルの下からまた、下に2回(2セル)コピーしていく、、というイメージです。
説明下手で申し訳ないです。
ご指摘の通り、果物一覧と都道府県一覧があって、それぞれをそれぞれの回数コピーするのでも
やり方ご存知でしたら、教えていただけたら嬉しいです。
申し訳ないですか、よろしくお願い致します。