ギリギリ行けるお一人様のライン

お世話になります。
1つのブックに「sheet1」と「sheet2」があります。
sheet1=転記元 (20名分のデータ)
sheet2=転記先



名前1
sheet1のセルB2:B14を → sheet2のセルE・F10:E・F22に転記 (sheet2のE・Fはセル結合)
sheet1のセルB16:B18を → sheet2のセルE・F23:E・F25に転記 (  〃  )
sheet1のセルB19を → sheet2のセルE・F27に転記 (  〃  )
sheet1のセルB20を → sheet2のセルE・F31に転記 (  〃  )

名前2
sheet1のセルC2:C14を → sheet2のセルM・N10:M・N22に転記 (sheet2のM・Nはセル結合)
sheet1のセルC16:C18を → sheet2のセルM・N23:M・N25に転記 (  〃  )
sheet1のセルC19を → sheet2のセルM・N27に転記 (  〃  )
sheet1のセルC20を → sheet2のセルM・N31に転記 (  〃  )

名前3
sheet1のセルD2:D14を → sheet2のセルU・V10:U・V22に転記 (sheet2のU・Vはセル結合)
sheet1のセルD16:D18を → sheet2のセルU・V23:U・V25に転記 (  〃  )
sheet1のセルD19を → sheet2のセルU・V27に転記 (  〃  )
sheet1のセルD20を → sheet2のセルU・V31に転記 (  〃  )

20名分のデータを転記(for~next ループ)させたいと思います。
VBAコードをご教示いただけますと幸いです。
宜しくお願い致します。

「Excel_VBAについて質疑です。(f」の質問画像

A 回答 (4件)

サンプルです



Sub Sample()
 Dim col1 As Long, col2 As Long

 Worksheets("Sheet1").Activate
 col2 = 5

 With Worksheets("Sheet2")
 For col1 = 2 To 21
  .Cells(10, col2).Resize(13).Value = Cells(2, col1).Resize(13).Value
  .Cells(23, col2).Resize(3).Value = Cells(16, col1).Resize(3).Value
  .Cells(27, col2).Value = Cells(19, col1).Value
  .Cells(31, col2).Value = Cells(20, col1).Value
  col2 = col2 + 8
 Next
 End With
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
おかげさまで、上手くいきました。
今回問合せしたVBA以外に、作成中のデータ(Excel)があるので
参考にさせて頂きます。
お忙しいところ、本当にありがとうございました。

お礼日時:2024/08/17 17:09

No2です。


No3の方の回答をみて、納得しました。名前1~名前20まで20人分あり、例として、名前1~名前3まで3人分を提示されたということですね。

No3の方の回答が理想的な回答になっていると思いますので、私からの回答は控えます。
    • good
    • 0
この回答へのお礼

画像の不鮮明と問い合わせと、内容の不備のご指摘ありがとうございました。№3の方の回答を参考にさせて頂きます。
お手数をお掛け致しました。

お礼日時:2024/08/17 17:16

画像が不鮮明なので、レイアウトがよくわかりませんが、


転記元のセルの数は、
名前1は、B2:B14、B16:B18、B19、B20で18個です。
同様に名前2、名前3も18個です。
20名分ということですが、18名分、もしくは、18×3=54名分
ではないでしょうか。どのように計算すると20名となるのでしょうか。

このサイトは、大きな画像をアップすると不鮮明になってしまいます。
画像が不鮮明なのはあなたのせいではありませんが、2つの画像を別々にアップしていただけると、多少は鮮明になるかもしれません。
(このサイトの質問者と回答者のみなさんは、(私もふくめて)画像が不鮮明であることに悩まされています)

今回は、画像が不鮮明でも転記元と転記先のセルの位置が明記されているので、マクロの作成に影響はありませんが、20名となるのが理解できなかったので補足要求を行いました。画像の再アップは必須ではありません。
    • good
    • 0

こんばんは



値の転記で良ければ、ループする必要はありません。

結合セルは範囲の左上のセルに代表される仕様になっていますので、
例えばB2:B14であれば
Worksheets("Sheet2").Range("E10:E22").Value = Worksheet("Sheet1").Range("B2:B14").Value
のような記述をすればセル範囲をまとめて転記できます。
(Copyメソッドでは上手くいきませんので、ご注意)

書式も含めてコピペなさりたい場合は、1セルずつという事になりそうですね。
その場合は、一旦セルの形状を合わせた上で再結合という手順になるでしょう。
    • good
    • 0
この回答へのお礼

早々に、ご回答ありがとうございました。
「Subまたはfunctionが定義されていません。」とエラーがでてしまいました。
Excelデータには名前1から名前20の20名分のデータがあるので、値転記ではなく人数分をループさせたいと思っています。
宜しくお願い致します。

お礼日時:2024/08/17 17:02

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A