- ベストアンサー
vbaマクロで担当者別にデータを転機する方法
- vbaマクロ初心者の方が、一覧シートのデータを担当者ごとに分けた別シートに転記する方法について教えてください。
- 一覧シートには複数の担当者のデータがあり、それを担当者名ごとに分けたシートに転記したいです。
- また、担当者シートが存在しない場合にはその旨を知らせる機能も追加したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一覧シートのA列の各セルの値(担当者)について、 全シートのシート名と照合し、見つかればそのシートの最終行に行データを追加、 見つからなければシート追加し、2行目に追加するという流れです。 あらかじめ各担当者シートの1行目に 「一覧」シートの列見出し(1行目)をコピー&ペーストしておいてください。 Sub test() Dim i As Integer Dim j As Integer Dim mysht As Worksheet i = 2 Do Until Sheets("一覧").Range("A" & i) = "" For Each mysht In ThisWorkbook.Worksheets If mysht.Name = Worksheets("一覧").Range("A" & i).Value Then j = mysht.Range("A65536").End(xlUp).Row + 1 Worksheets("一覧").Rows(i).Copy mysht.Range("A" & j) Exit For End If If mysht.Index = ThisWorkbook.Worksheets.Count Then MsgBox "シート「" & Worksheets("一覧").Range("A" & i).Value & "」が見つかりません。" & vbCrLf & _ "シートを追加します。" Worksheets.Add after:=Worksheets(ThisWorkbook.Worksheets.Count) With Worksheets("一覧") ActiveSheet.Name = .Range("A" & i).Value .Rows(1).Copy ActiveSheet.Range("A1") .Rows(i).Copy ActiveSheet.Range("A2") .Activate End With End If Next i = i + 1 Loop MsgBox "終了しました。" End Sub
その他の回答 (1)
- MARU4812
- ベストアンサー率43% (196/452)
>・「一覧」シートのデータは100~200行、担当者は10名ほどです。 この規模ならオートフィルタを順に掛けて全選択コピペを手作業で繰り返しても 10分程度で終わってしまう。これが月に1回発生する業務だと仮定して、1年で たった2時間の業務時間しか使わなかった場合、マクロの作成に(掲示板での やり取りを含めて)2時間以上掛けたら費用対効果が劣るという罠。 ・・・もう手作業でいいんじゃね?
お礼
早速ご回答有難うございました!! コピペしたところ大成功でした。 有難うございました。 日次作業でしたので大変助かりました。 vbaを学ぶ近道はやはり事例をつんでコピペするのがよいのでしょうか?? 直に手入力するとなかなかうまくいかないのが実情です。。