[[20150518171243]] 『横にコピー(コピー先が変動)していくマクロ』(OMO) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『横にコピー(コピー先が変動)していくマクロ』(OMO)

お知恵をお貸しください…
1行目にタイトルがあり、そのタイトルはC列まであったり、時にはF列まであったりと日によって変動します。
そのタイトルの下の行(2行目)にいれてある式を、同じ2行目のC列やF列まで横に式をコピーしたいです。変動する列に対してどのようなマクロを組むとうまくコピーできるのでしょうか?

例)昨日のデータ
 A   B   C   D   E   F
1○社 ○社 ○社 ○社 ○社 ○社
2式→→→→→→→→→→→→→→→
3

例2)今日のデータ
 A   B   C 
1○社 ○社 ○社
2式→→→→→→→
3

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 ある行の最終列を求める方法はいくつかありますが、その行の最終列のセルから左に、最初に値があるセルを見つけるというのが
 定番の1つです。

 で、2行目に数式を埋め込む、これを操作でやるということはできますよね。
 ・A2を選択してマウスで、最後の列までフィルコピー
 ・A2をCtrl/Cでコピーして、B2から最後の差列まで選択して Ctrl/v

 この2種類の操作をマクロ記録すると

 Sub Macro1()
 '
 ' Macro1 Macro
 '

 '
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:E2"), Type:=xlFillDefault
    Range("A2:E2").Select
 End Sub

 Sub Macro2()
 '
 ' Macro2 Macro
 '

 '
    Range("A2").Select
    Selection.Copy
    Range("B2:E2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
 End Sub

 こんなコードが生成されますね。
 問題は、この中の Range("A2:E2") であるとか、Range("B2:E2") といった固定でコードになったところを
 どのように変動する値として与えるかということですね。

 以下、ヒントです。
 これを元に、挑戦してみてください。
 壁にぶつかればSOSを投げかけてください。

 Sub Hint()
    Dim j As Long

    j = Cells(1, Columns.Count).End(xlToLeft).Column

    MsgBox "A2:E2 にあたるアドレスは " & Range("A2", Cells(2, j)).Address & " です"

    MsgBox "B2:E2 にあたるアドレスは " & Range("B2", Cells(2, j)).Address & " です"

 End Sub

(β) 2015/05/18(月) 18:53


>(β)さま
助言頂きありがとうございました
教えて頂いたことを参考に作ってみたところうまく動作いたしました。
じつはこれを参考に応用してみようと思ったのですが、
例えば、タイトル行がT4~横に、T5に式を入れてT4のタイトルの終わりまで入力しようとしたのですが
うまくいきませんでした。
このようにシートの端でなく、シートの中間にタイトルがある場合はどのようにマクロを組むとよいのでしょうか?

(OMO) 2015/05/19(火) 12:59


 外出してレス遅れました。

 j = Cells(1, Columns.Count).End(xlToLeft).Column

 これは 1行目のデータ最終列番号を取得しています。
 今回の場合は 4 行目のデータ最終列ですから、Cells(1, Columns.Count) のところが Cells(4, Columns.Count)になりますね。

 次に、セットすべき領域、Range("A2", Cells(2, j)) ないしは Range("B2", Cells(2, j)) ですけど

 Range("A2", Cells(2, j)) これは A2 から j 列 2 行目まで、Range("B2", Cells(2, j)) これは B2 から j 列 2 行目まで。

 今回の場合は T5から j 列 5行目まで、ないしは U5 から j列 5行目まで ということになりますね。

 ということで、セットすべき領域の記述を変更してみてください。

(β) 2015/05/19(火) 21:59


>βさま

ご返答有難うございました!!
βさまの助言を参考に作ってみたところうまくいきました。
まだまだマクロを使い始めたばかりで基本的なことを理解できていないので、基礎から頑張って勉強したいと思います。本当にありがとうございました!!

(OMO) 2015/05/20(水) 12:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.