
excel2010でのテンプレートを用いた転記についての質問です
リスト表という名前でA列〜J列まで項目がありA5セルよりデータ入力をしております
これらの入力したデータを別のシートにテンプレートがあるのですが
そのテンプレート表に転記をして印刷をしたいです
ただし転記時にリスト表からC列を省いてD〜I列を左に1つずらし
J列はM列に移動させたい
リスト表が15行を越えたら新しくテンプレート表をコピーし16行目から30行目まで
を転記
その繰り返しをリスト表の最終行まで転記するかんじです
このマクロの書き方をご教示下さい
リスト表:AからJ列の可変行
テンプレート表:AからM列までの15行の表
No.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
fujillin 様
返信が遅れてしまい申し訳ございません
コードを修正して無事動作させることができました
誠にありがとうございました
No.1
- 回答日時:
こんにちは
詳細が無い割には、どこがわからないのかも不明なので、大雑把な回答しかできませんが・・・
>このマクロの書き方をご教示下さい
書き方そのものがわからないのではないとは思いますが念のため。
マクロは、標準モジュールなどに直接記述して実行すれば宜しいと思います。
処理の手順はいろいろ考えられるところですが、どの方法が一番ということも無いと思いますが、以下に一例として記しておきます。
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)の位置を調整すれば良いでしょう。
(こちらは固定位置だと想像しますので)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Excel(エクセル) 別シートの表の値を参照したい 2 2022/03/30 15:11
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
エクセル 同じ数字を他の列に自...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
Excel 文字列を結合するときに...
-
Excelで半角の文字を含むセルを...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
EXCELで 一桁の数値を二桁に
-
エクセル 文字数 多い順 並...
-
エクセルの表から正の数、負の...
-
エクセルで2列のセルを連続して...
-
エクセルで最初のスペースまで...
-
エクセルの項目軸を左寄せにしたい
-
VBAでセル入力の数式に変数を用...
-
「B列が日曜の場合」C列に/...
-
Excel、市から登録している住所...
-
エクセルのセル内の文字の一部...
-
エクセルで文字が混じった数字...
-
オートフィルターをかけ、#N/A...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
EXCELで 一桁の数値を二桁に
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセルで文字が混じった数字...
-
エクセル(勝手に太字になる)
-
エクセル 文字数 多い順 並...
-
Excelで半角の文字を含むセルを...
-
「B列が日曜の場合」C列に/...
-
エクセルで、列の空欄に隣の列...
-
Excel 文字列を結合するときに...
-
Excel、市から登録している住所...
-
【VBA】特定列に文字が入ってい...
-
エクセルのセル内の文字の一部...
-
エクセル 同じ値を探して隣の...
-
お店に入るために行列に並んで...
-
エクセルの並び変えで、空白セ...
-
文字列に数字を含むセルを調べたい
-
エクセルの項目軸を左寄せにしたい
おすすめ情報