- ベストアンサー
エクセルVBAでシート間のデータを自動貼り付けする方法
- エクセル2003の「メイン」「本社」「地方」というシートに、指定したセルのデータを自動的に他のシートの下端に貼り付ける方法を教えてください。
- VBAを使用して、データの振り分けと自動貼り付けを行いたいです。
- マクロ初心者なので、ネットで調べてもうまくいかないです。どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 以下のマクロで、試してみてください。 Sub 振り分け() Dim wRow1 As Long Dim wRow As Long Dim mRow As Long Dim ShtNm As String ' With ActiveSheet 'メインシートの入力最大行数を求める mRow = .Range("B" & Rows.Count).End(xlUp).Row For wRow = 2 To mRow '場所 ShtNm = .Cells(wRow, 4) '振分先の設定行を取得 wRow1 = Get_Row(ShtNm) 'B列設定 Worksheets(ShtNm).Cells(wRow1, 2) = .Cells(wRow, 2) 'C列設定 Worksheets(ShtNm).Cells(wRow1, 3) = .Cells(wRow, 3) Next End With End Sub '振分先の設定行を取得 Function Get_Row(ShtNm As String) As Long Get_Row = Worksheets(ShtNm).Range("B" & Rows.Count).End(xlUp).Row + 1 If Get_Row = 1 Then Get_Row = 2 End If End Function
その他の回答 (1)
- hige_082
- ベストアンサー率50% (379/747)
私には、内容が理解できません 何をどのような条件で、どうしたいのかが読み取れません なぜ、折角「メイン」シートに、まとめたデータを、再度、振り分けるのですか? まとめる際に、条件はあるのでしょうか、それとも単純に本社、地方の順でよいのですか、コピペではダメなのですか 場所には、どんなデータが入るのですか、気にしなくても良いのでしょうか 無理して、マクロでやる必要があるのですか
補足
「メイン」シートは、データをまとめるためにあるのではなく、データを振り分ける為だけに用意してあるものです。 私が扱っているデータは、既に完成されたものではなく、随時増えていくものなので、各シートをいちいち開いて入力するとかなりの手間になってしまうので、「メイン」シートに入力したものを一括振り分けしたいと考えている次第です。 ちなみに、質問させていただいている中では項目名、シート数が少なくなっておりますが、実際に振り分けるデータは10項目(B1~K1)、シート数8になっております。 実際の選択範囲は任意で変えれば良いので、あえて質問には数を少なく記載させていただいた次第です。 まとめる際の条件は、「メイン」シートのB列にあるものは別のシートのB列の下端に、C列にあるものはC列の下端に、・・・という条件だけです。ただし、「メイン」シートのD1(場所)はあくまでも振り分けるシートを判別するだけなので、D列のデータは振り分け対象ではありません。 場所に入るデータは、シート名なので「本社」、「地方」のいずれかが入るものとお考えください。 膨大なデータ量を扱っているので、メインシートに入力したものを一括振り分けをしたいと考えております。 この説明では足りないかもしれませんが、是非とも宜しくお願い致します。
お礼
おー!!!! 完璧です!! しかも式の中にちゃんと説明まで入れてくださってとても分かりやすいです(><) マクロを実行した際の感動が半端じゃないです! 本当にありがとうございました!! 大変勉強にもなりました。 ご教示いただいたことに感謝致します。