[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで別シートの列を指定し貼付け』(momo)
当月分が集計されたシートのC2〜C67にデータがあります。
このC2〜C67のデータを別シート2022(年度集計シート)の月別に貼付けをマクロで実施したいです
当月分シートの数値の場所は固定
2022シートはB1が1月、C1が2月・・・M1が12月です
A B C ・・・ L M
1 1月 2月 3月 11月 12月
2
3
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
Sub てきとう() Range("C2:C67").Copy Sheets("2022").Cells(2, Month(Date) + 1) End Sub
(ひまつぶし) 2022/01/07(金) 11:14
(もこな2) 2022/01/07(金) 11:21
もなこ2さん ありがとうございます。
月を特定する部分で悩んでいますがひまつぶしさんの方法ですと月ズレとなってしまいます。
例えばインプットボックスを使い1と入力すると1月、5と入力すると5月に貼り付くような事は可能でしょうか?
他の方法でも全くかまいませんのでよろしくお願いします。
(momo) 2022/01/07(金) 12:02
>前月データを集計の為、PCの日付連動だと月ズレとなってしまいました。
↓に注目してみてはどうですか?
Range("C2:C67").Copy Sheets("2022").Cells(2, Month(Date) + 1) ^^^^^^^^^^^^^^^ なお↑だと値貼付ではなく、ただのコピペですよ。
(もこな2) 2022/01/07(金) 12:25
■1
提示の例だと 1月がA列に見えますが、実際にはこういうことですよね
【2022】シート
__A__ __B__ __C__ __D__ .... __L__ __M__ 1 1月 2月 3月 11月 12月 2 3
つまり、
1月・・・・ 2列目 2月・・・・ 3列目 3月・・・・ 4列目 〜 11月・・・・ 12列目 12月・・・・ 13列目
のように、月+1列目に出力すればokですね。
■2
既にコメントしているとおり、COPYメソッドの引数に貼付先を指定した場合は普通のコピペと同じ挙動になります。
ですので、【値貼付】したいのであれば、別途PasteSpecialメソッドを使うことになります
Sub 研究用1() Stop 'ブレークポイントの代わり
Worksheets("入力").Range("C2:C67").Copy '←コピーする命令 Worksheets("2022").Cells(2, InputBox("何月?") + 1).PasteSpecial Paste:=xlValues '←値貼付する命令 End Sub
■3
なお、Valueプロパティを直接参照する方法でも↑と同じ結果になります。
ただし、その場合はセル範囲の大きさをあわせてやる必要があります。
Sub 研究用2() Stop 'ブレークポイントの代わり
With Worksheets("入力").Range("C2:C67") Worksheets("2022").Cells(2, InputBox("何月?") + 1).Resize(.Rows.Count, .Columns.Count).Value = .Value End With End Sub
■4
蛇足ですが、複数の(ブックや)シートが絡んでくる処理を行うのであればきちんと、対象のシートを明示したほうがよいとおもいます。
また、その場合に
Worksheets("2022").〜〜〜 ←【2022】という名前のシート Worksheets(2022).〜〜〜 ←【2022】番目のシート
ということになりますので、頭の片隅にいれておくとよいと思います。
(もこな2) 2022/01/07(金) 13:11
(momo) 2022/01/07(金) 13:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.