マクロの超初心者です。
数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。
sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。
●氏名が入力されています
sheet1(A9) → sheet2(C2)
sheet1(E9) → sheet2(C5)
sheet1(I9) → sheet2(C8)
●項目1
sheet1(A8) → sheet2(E3)
sheet1(E8) → sheet2(E6)
sheet1(I8) → sheet2(E9)
●項目2
sheet1(A18~D18の結合セル) → sheet2(E2)
sheet1(E18~H18の結合セル) → sheet2(E5)
sheet1(I18~L18の結合セル) → sheet2(E8)
と反映させたいのですが、250行あるのですが、
簡単にマクロで出来ないでしょうか??
ちなみに↓コレが上記の内容で作ってみたものです。
わかりずらい質問でスイマセン。
Range("A9").Select
Selection.Copy
Sheets("sheet2").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("E9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("C5").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("I9").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("C8").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("A8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("E3").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("E8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("E6").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("I8").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("E9").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("A18:D18").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("E2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("E18:H18").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("E5").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("sheet1").Select
Range("I18:L18").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet2").Select
Range("E8").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End Sub
No.2
- 回答日時:
#1です。
250回と言うのが固定なら。
Sub try_2()
Dim ws As Worksheet
Dim i As Integer, j As Integer
Dim v As Variant
Set ws = Worksheets("Sheet1")
v = Array("A18", "E18", "I18")
With Worksheets("Sheet2")
For j = 0 To 249
For i = 0 To 2
.Range("C2").Offset(i * 3 + j * 9).Value = ws.Range("A9").Offset(j * 25, i * 4).Value
.Range("E3").Offset(i * 3 + j * 9).Value = ws.Range("A8").Offset(j * 25, i * 4).Value
.Range("E2").Offset(i * 3 + j * 9).Value = ws.Range(v(i)).Offset(j * 25).Value
Next
Next
End With
Set ws = Nothing
End Sub
とかでしょうか。
ご参考まで。
ご丁寧に本当にありがとうございます。
大変助かりました!!
ちなみに、今回は250回と限定とのことでしたが、
もっと増やす場合はどのようにしたらよろしいのでしょうか??
No.1
- 回答日時:
提示された1回分なら。
Sub try()
Dim ws As Worksheet
Dim i As Integer
Dim v As Variant
Set ws = Worksheets("Sheet1")
v = Array("A18", "E18", "I18")
With Worksheets("Sheet2")
For i = 0 To 2
.Range("C2").Offset(i * 3).Value = ws.Range("A9").Offset(, i * 4).Value
.Range("E3").Offset(i * 3).Value = ws.Range("A8").Offset(, i * 4).Value
.Range("E2").Offset(i * 3).Value = ws.Range(v(i)).Value
Next
End With
Set ws = Nothing
End Sub
でも出来るかと思います。
ご参考程度に。
ありがとうございます!!
内容はサッパリ分かりませんでしたが、
コピーして実行したらできました。
そして、私の説明不足でしたが250行というのは
下記のような規則性があります。
●氏名
sheet1(A9) → sheet2(C2)
sheet1(E9) → sheet2(C5)
sheet1(I9) → sheet2(C8)
sheet1(A34) → sheet2(C11)
sheet1(E34) → sheet2(C14)
sheet1(I34) → sheet2(C17)
●項目1
sheet1(A8) → sheet2(E3)
sheet1(E8) → sheet2(E6)
sheet1(I8) → sheet2(E9)
sheet1(A33) → sheet2(E12)
sheet1(E33) → sheet2(E15)
sheet1(I33) → sheet2(E18)
●項目2
sheet1(A18~D18の結合セル) → sheet2(E2)
sheet1(E18~H18の結合セル) → sheet2(E5)
sheet1(I18~L18の結合セル) → sheet2(E8)
sheet1(A43~D43の結合セル) → sheet2(E11)
sheet1(E43~H43の結合セル) → sheet2(E14)
sheet1(I43~L43の結合セル) → sheet2(E17)
つまり、
sheet1:A、E、I列の25行置きに入力されている文言を
sheet2:C or E列に3行置きに反映させたい
これを250行分行いたいのですが、どのようにすればよろしいでしょうか?
また、空白の部分があってもエラー無しで行いたいのですが、
よろしくお願いいたいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 図形の選択法は?
-
セル入力文字が、「右のセルに...
-
エクセル、ページをまたがった...
-
パワポの複数ページにまたがる...
-
ワードの文章囲み枠(?)を消...
-
バグ?Excel→Word貼り付け時の罫線
-
ワードの表の行が広がってしまう
-
ワードで勝手に点線ラインがでる
-
Word2016でExcelデータを差込し...
-
あるセルに色を付けた時、別の...
-
Wordで、表のセルが変なところ...
-
パワーポイントの表
-
【Excel VBA】CSV取込時、数字...
-
用紙の真ん中に縦線を入れる方法
-
PDFファイルの罫線を消す方法
-
エクセルでセルの中の文字が削...
-
パソコンのWordで便箋に縦書の...
-
表と票の違いは?
-
Word2007での水色の点線について
-
2段組みで左右別々に書き込め...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 図形の選択法は?
-
PageBreak プロパティを設定で...
-
(VBA)指定したセルがアクティブ...
-
VBA 選択したセルが空白であっ...
-
TextBoxにExcelの背景色を取得
-
顧客ごとに違う点検案内を作成...
-
VBAでセルの選択範囲を指定する...
-
【Excel VBA】Caseマクロを簡潔...
-
マクロについて教えてください
-
セル入力文字が、「右のセルに...
-
エクセル、ページをまたがった...
-
パワポの複数ページにまたがる...
-
Word2016でExcelデータを差込し...
-
ワードの文章囲み枠(?)を消...
-
【Excel VBA】CSV取込時、数字...
-
ワードの表の行が広がってしまう
-
エクセルでセルの中の文字が削...
-
あるセルに色を付けた時、別の...
-
エクセルで知らない間に行がず...
-
wordで罫線が引けない・・・
おすすめ情報