以下を、VBAの標準モジュールに貼り付けて実行してみてください。
「管轄」がA列、「担当者」がB列、「店名」がC列、「販売数」がD列に入っているものとします。元のデータが入っているシート名を「元データ」としています。
'---ここから---
Sub 担当別シート作成()
Application.ScreenUpdating = False
For i# = 2 To Worksheets("元データ").Cells(2, 2).End(xlDown).Row
j# = 1
'検索中の人のシートが既にできているかを判断する。
For Each sheet_name In Worksheets
If sheet_name.Name = Worksheets("元データ").Cells(i, 2).Value Then
j = 2
Exit For
End If
Next
'検索中の人のシートがない場合、新規に作成する。
If j = 1 Then
Worksheets.Add After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = Worksheets("元データ").Cells(i, 2).Value
For j = 1 To 4
Worksheets(Worksheets.Count).Cells(1, j).Value = Worksheets("元データ").Cells(1, j).Value
Next j
End If
'データのコピー
For j = 4 To 1 Step -1
Worksheets(Worksheets("元データ").Cells(i, 2).Value). _
Cells(Worksheets(Worksheets("元データ").Cells(i, 2).Value). _
Cells(65535, 1).End(xlUp).Row + 1, j).Value = Worksheets("元データ").Cells(i, j).Value
Next j
Next i
'それぞれのシートの列幅を最適化します。
For Each sheet_name In Worksheets
sheet_name.Columns("A:D").AutoFit
Next
'元データのB列(担当者)を消します。
Worksheets("元データ").Columns("B:B").Delete
Application.ScreenUpdating = True
End Sub
'---ここまで---
「標準モジュールに貼り付ける」方法がわからないときは、以下の方法でお試しを。
1) ツール-マクロ-マクロの記録 で出てきたウィンドウの、「マクロ名(M)」と書かれた欄に、「担当別シート作成」と書き込んで、「OK」をクリックしてください。
2) 何も操作せずに、マクロの記録を終了してください。
3) AltキーとF8キーを同時に押して「マクロ」ウィンドウを開きます。
4) 「担当別シート作成」を選択し、右の「編集(E)」ボタンをクリックしてください。
5) 「Microsoft Visual Basic」というウィンドウが新たに立ち上がり、
Sub 担当別シート作成()
'
' 担当別シート作成 Macro
' マクロ記録日 : 2005/2/15 ユーザー名 : ○○ ○○
'
'
End Sub
と表示されているはずです。
6)このSub 担当別シート作成()と書かれている行と、End Subと書かれている行の間に、上のソースをコピーして貼り付けます。
7) Microsoft Visual Basicウィンドウを閉じます。
8) 後はマクロを実行するのみ。
ただし上のマクロは「担当者」列を消去する上に、「元に戻す」コマンドで復活しないので、必ずバックアップを取ってから行ってください。
お礼
お礼が遅くなりましたが、とても丁寧にお教え下さってありがとうございました。 実際にやってみました。No.4のお答えの自動記録の方は日頃使っているので大丈夫なのですが、実際VBAを一から作るとなると難しくわかりません。大変助かりました。 申し訳ないのですが、再度新しい質問が発生しましたので、よろしければまたご回答よろしくお願いします。