- ベストアンサー
エクセルのシートからシートへ行単位で自動転記する方法
- エクセルのシートから別のシートへ行単位で自動転記する方法を教えてください。収支表を作成しており、区分ごとに行を別のシートへ転記したいです。
- 収支表には日付、入金、code、社名、区分などのデータがあります。それぞれの区分(表、地、表)ごとに、該当する行を別のシートへ転記したいです。
- 具体的にどのようにエクセルのセルを操作すればよいのか、初心者なので詳しい説明が欲しいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
このマクロで実現できます。 条件としては、 ・転記元のシートを表示した状態でマクロを実行すること ・1行目が項目名で、区分がE列であること ・区分の名前がついたシートが存在すること Sub AutoCopy() Dim RowX As Long Dim ColX As Long Dim Category As String ColX = 5 RowX = 2 Do Until IsEmpty(Cells(RowX, ColX).Value) Category = Cells(RowX, ColX).Value Rows(RowX).Copy Destination:=Sheets(Category).Cells(Rows.Count, ColX).End(xlUp).Offset(1).EntireRow RowX = RowX + 1 Loop End Sub あとで修正を加えようとしても、理解していないと無理な場合もあります。 これがきれいなマクロとは言いがたいですが、これを入り口として、マクロの勉強をしてみてください。
その他の回答 (2)
- higekuman
- ベストアンサー率19% (195/979)
#2です。 > が、しかし20行目までしか転記されません。 このマクロは、区分が空セルのところで止まるようになっています。 21行目が空行になっていませんか? > 実際には区分はF列にあるので > ColX = 5 を ColX = 6 にすればいいのですね。 そうです。 > 件名が入っているのが、5行目からなので > RowX = 2 を RowX = 5 にしました。 違います。 > また、毎回マクロを実行すると初めからのものも再度転記されてしまうのですが、 そのように作りました。 > その日だけを転記するということもできるのでしょうか? 当然出来ます。 > たくさん質問攻めで申し訳ないのですが、お答えいただけるとうれしいです。よろしくお願いいたします。 このまま答えていくと、すべて私が作ることになり、あなたの勉強にならないので、これで終わりにさせていただきます。 勉強頑張ってください。
お礼
higekumanさん 暖かいご忠告ありがとうございます。 たくさんのヒントをいただき、嬉しく思います。 私なりに調べて勉強して、必ず作成します。 本当にありがとうございました。
- bluepenguin
- ベストアンサー率41% (51/124)
VBAなどを使うと出来るのですが、初心者の方とのことで かなり難しいと思います。 自動転記ではないですが、 オートフィルタを使うのはダメですか? [データ]-[フィルタ]-[オートフィルタ]で、 区分を「●」を選択すると、 区分が「●」の行だけ表示されますので、 コピー&ペーストで、 「●」シートへ貼り付け。 「△」「★」も同様に。
お礼
早々に、ご回答いただきありがとうございます。 bluepenguinさんのおっしゃるとおり、現在はオートフィルタを使ってコピー&ペーストで貼り付けています。 春以降、区分も件数も増えるとのことなので、それに備えて今から考えていきたいと思っています。 VBAは難しいとは聞いておりますが、ぜひ試してみたいと思います。 私なりに一生懸命勉強いたしますので、ご教授お願いできないでしょうか?
お礼
higekumanさん、ありがとうございます。 この通りにやってみたら、できました! すごく感激です。。 が、しかし20行目までしか転記されません。 場合によっては、100行くらいいくかも知れないのです。 どこを修正すればいいのでしょうか? 実際には区分はF列にあるので ColX = 5 を ColX = 6 にすればいいのですね。 件名が入っているのが、5行目からなので RowX = 2 を RowX = 5 にしました。 また、毎回マクロを実行すると初めからのものも再度転記されてしまうのですが、その日だけを転記するということもできるのでしょうか? たくさん質問攻めで申し訳ないのですが、お答えいただけるとうれしいです。よろしくお願いいたします。