複数回コピーしながら移動するマクロについて教えて下さい。
下のような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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
【お題】逆襲の桃太郎
【大喜利】桃太郎が1回鬼退治に失敗したところから始まる新作昔話「リベンジオブ桃太郎」にはこんなシーンがある
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
繰り返し1行~28行までを順順にコピーする方法
Visual Basic(VBA)
-
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
EXCELマクロで、シート間でのコピーペーストを繰り返す方法
Excel(エクセル)
-
-
4
エクセルVBA 指定範囲を指定回数繰り返しコピー
Excel(エクセル)
-
5
Excel で行を指定回数だけコピーしたい
Excel(エクセル)
-
6
excelで任意のセルを指定回数コピーペーストする方法を教えてください
Excel(エクセル)
-
7
一行おきにコピーするマクロが知りたい
Excel(エクセル)
-
8
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
9
VBA コピーして次の値まで貼り付けを繰り返す
Visual Basic(VBA)
-
10
VBA 連続行データを5行ずつ隣の列に貼り付ける
Excel(エクセル)
-
11
マクロ自動コピペ 貼り付ける場所が変わる場合
その他(Microsoft Office)
-
12
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
13
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
14
Excel VBA 複数行を数の分だけ挿入したい
Visual Basic(VBA)
-
15
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
-
16
一行おきに貼り付ける 可能でしょうか
Visual Basic(VBA)
-
17
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
18
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
19
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
20
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
VBAで繰り返しコピーしながら下...
-
エクセルの保護で、列の表示や...
-
Excelでの並べ替えを全シートま...
-
Excel の複数シートの列幅を同...
-
【VBA】シート名と見出しが一致...
-
エクセルのブック分割マクロを...
-
エクセルで、チェックボックス...
-
【VBA】複数のシートの指定した...
-
Excel VBA ピボットテーブルに...
-
【条件付き書式】countifsで複...
-
Excelのセルの色を変えた行(す...
-
エクセルのマクロで複数条件に...
-
Excelに自動で行の増減をしたい...
-
【マクロ】あいうえお順のシー...
-
excel 複数のシートの同じ場所...
-
VLOOKアップ関数の結果の...
-
シートをまたぐ条件付き書式に...
-
エクセル複数シートのデータを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
文字の色も参照 VLOOKUP
-
Excel の複数シートの列幅を同...
-
VBAで繰り返しコピーしながら下...
-
【条件付き書式】countifsで複...
-
Excelのセルの色を変えた行(す...
-
エクセルで、チェックボックス...
-
エクセル マクロ 標準モジュー...
-
Excelでの並べ替えを全シートま...
-
Excelに自動で行の増減をしたい...
-
エクセルの列の限界は255列以上...
-
【VBA】複数のシートの指定した...
-
エクセルで横並びの複数データ...
-
Excel VBA ピボットテーブルに...
-
VLOOKアップ関数の結果の...
-
SUMPRODUCTにて別シートのデー...
-
Excel 2段組み
-
【VBA】シート名と見出しが一致...
-
excel 複数のシートの同じ場所...
おすすめ情報
ありがとうございます!
都道府県の数を指定したのは、
果物の数を都道府県の数だけコピーしたいからなんです。
りんごをシート2のA列に下2回(2セル)コピーして、
次にみかんをシート2のりんごがコピーされている一番最後のセルの下からまた、下に2回(2セル)コピーしていく、、というイメージです。
説明下手で申し訳ないです。
ご指摘の通り、果物一覧と都道府県一覧があって、それぞれをそれぞれの回数コピーするのでも
やり方ご存知でしたら、教えていただけたら嬉しいです。
申し訳ないですか、よろしくお願い致します。