• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:vbaマクロ一覧から担当者別にデータを転機する方法)

vbaマクロで担当者別にデータを転機する方法

このQ&Aのポイント
  • vbaマクロ初心者の方が、一覧シートのデータを担当者ごとに分けた別シートに転記する方法について教えてください。
  • 一覧シートには複数の担当者のデータがあり、それを担当者名ごとに分けたシートに転記したいです。
  • また、担当者シートが存在しない場合にはその旨を知らせる機能も追加したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • jin34
  • ベストアンサー率80% (17/21)
回答No.1

一覧シートの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

sunameri_123
質問者

お礼

早速ご回答有難うございました!! コピペしたところ大成功でした。 有難うございました。 日次作業でしたので大変助かりました。 vbaを学ぶ近道はやはり事例をつんでコピペするのがよいのでしょうか?? 直に手入力するとなかなかうまくいかないのが実情です。。

その他の回答 (1)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

>・「一覧」シートのデータは100~200行、担当者は10名ほどです。 この規模ならオートフィルタを順に掛けて全選択コピペを手作業で繰り返しても 10分程度で終わってしまう。これが月に1回発生する業務だと仮定して、1年で たった2時間の業務時間しか使わなかった場合、マクロの作成に(掲示板での やり取りを含めて)2時間以上掛けたら費用対効果が劣るという罠。 ・・・もう手作業でいいんじゃね?

関連するQ&A

専門家に質問してみよう