プロが教えるわが家の防犯対策術!

excel2010でのテンプレートを用いた転記についての質問です

リスト表という名前でA列〜J列まで項目がありA5セルよりデータ入力をしております
これらの入力したデータを別のシートにテンプレートがあるのですが
そのテンプレート表に転記をして印刷をしたいです

ただし転記時にリスト表からC列を省いてD〜I列を左に1つずらし
J列はM列に移動させたい

リスト表が15行を越えたら新しくテンプレート表をコピーし16行目から30行目まで
を転記

その繰り返しをリスト表の最終行まで転記するかんじです

このマクロの書き方をご教示下さい



リスト表:AからJ列の可変行

テンプレート表:AからM列までの15行の表

A 回答 (2件)

No1です。



無理矢理コードにしてみるなら、雰囲気的には以下のような感じでしょうか?
詳細不明なので、シート名やセル位置は適当ですが、全体的にはこんな感じでできるかと思います。
あとは、ご自由に修正してください。

Sub Q_13461490()
Dim sh As Worksheet, rng As Range, i As Long

Set sh = Worksheets("テンプレート")
With Worksheets("リスト表")
Set rng = .Range("A5:A19")
For i = 5 To .Cells(Rows.Count, 1).End(xlUp).Row Step 15
If i > 5 Then
Set rng = rng.Offset(15)
sh.Copy after:=sh
Set sh = ActiveSheet
End If
sh.Range("A1:B15").Value = rng.Resize(, 2).Value
sh.Range("E1:J15").Value = rng.Offset(, 3).Resize(, 6).Value
sh.Range("M1:M15").Value = rng.Offset(, 9).Value
Next i
End With
End Sub
    • good
    • 2
この回答へのお礼

fujillin 様

返信が遅れてしまい申し訳ございません
コードを修正して無事動作させることができました

誠にありがとうございました

お礼日時:2023/05/13 06:13

こんにちは



詳細が無い割には、どこがわからないのかも不明なので、大雑把な回答しかできませんが・・・

>このマクロの書き方をご教示下さい
書き方そのものがわからないのではないとは思いますが念のため。
マクロは、標準モジュールなどに直接記述して実行すれば宜しいと思います。

処理の手順はいろいろ考えられるところですが、どの方法が一番ということも無いと思いますが、以下に一例として記しておきます。

1)リスト表の最終行を取得する
必ず値のある列があれば、その列で最終行を取得すれば良いでしょう。
最終行の取得はおきまりの Cells(Rows.Count, 列).End(xlUp) でできます。
どの列にも空白の可能性がある場合は、各列の最終行の最大値を求めるか、CurrentRegionを利用するなどの方法も考えられます。

2) コピー元の初期値として、Range("A5:A19")をセット。
>A5セルよりデータ入力
とありますが、後の説明では
>16行目から30行目まで
となっているので、もしかすると"A1:A14”なのかも知れません。(こちらでは不明)

3)5行目(あるいは1行目?)から1)の最終行までStep15で以下をループ
 For rw = 5 to 最終行 Step 15
ループの回数を指定するだけなので、rwは以降使いませんが、Do Whileなどでもかまいません。

3-1)A:B列、D:I列の2回に分けて転記
A:B列は「コピー元.Resize(,2)」で、D:I列は「コピー元.Offset(,3).Resize(,6)」で指定できます。
転記は、コピー(=書式も併せてコピー)であれば、Copyメソッドで
 Source.Copy Desitination で可能です。
テンプレートとのことなので、書式は不要なら
 Destination.Value = Source.Value で、セル範囲の値の転記が可能です。

3-2)次のループのために
コピー元が最終行を超えていなければ、
・コピー元のセル範囲を、15行分オフセット
 Set コピー元 = コピー元.Offset(15)
・テンプレートシートをコピー
 テンプレートシート.Copy after:=テンプレートシート
 新しいコピー先(=テンプレート)をActiveSheetにセット

のような手順で、できるものと思います。


※ 不明点がわからないので、だらだらと全体的な説明を書きましたけれど、説明する文章の方がご質問の内容のコードよりも遥かに長いものになってしまいました。(笑)
※ テンプレートとあるので、テンプレート側にタイトル行や何かがあるのではと想像しますが、どうなっているのか不明ですので、そのあたりは転記先(=Destination)の位置を調整すれば良いでしょう。
(こちらは固定位置だと想像しますので)
    • good
    • 0

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