[[20220107105111]] 『マクロで別シートの列を指定し貼付け』(momo) ページの最後に飛ぶ

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

 

『マクロで別シートの列を指定し貼付け』(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


ひまつぶしさんありがとうございます。
このコードで出来ました。
ですが前月データを集計の為、PCの日付連動だと月ズレとなってしまいました。

もなこ2さん ありがとうございます。
月を特定する部分で悩んでいますがひまつぶしさんの方法ですと月ズレとなってしまいます。
例えばインプットボックスを使い1と入力すると1月、5と入力すると5月に貼り付くような事は可能でしょうか?
他の方法でも全くかまいませんのでよろしくお願いします。
(momo) 2022/01/07(金) 12:02


>インプットボックスを使い1と入力すると1月、5と入力すると5月に貼り付くような事は可能でしょうか?
可能です。

>前月データを集計の為、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


もこな2さん すばらし〜です。
研究用1で思っている事が出来ました。研究用2も試し勉強します。
そして沢山のアドバイスありがとうございます。
感謝、感謝

(momo) 2022/01/07(金) 13:36


コメント返信:

[ 一覧(最新更新順) ]


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