プロが教える店舗&オフィスのセキュリティ対策術

初心者です。よろしくお願いします。

Excelで条件別にシートを振り分ける方法を教えてください。
名簿の管理をしています。
シート1にNoや名前を入力し、条件ごとに別シートに行ごと自動で振り分ける方法がありますか?

情報を入力するのは、シート1のみで、
シート2~6を自動で振り分けたクラス名簿という形にしたいです。
現在、以下のようにシート1を作成してます。

    列A   列B   列C  
行1  No  氏名   クラス 
行2  1   花子    A
行3  2   太郎    C
行4  3   二朗    B
行5  4   京子    B
行6  5   史郎    B
行7  6   典子    C
行8  7   公子    A


これを、シート2はAクラス、シート3はBクラスという具合に、Noと氏名を振り分けたいです。
よろしくお願いいたします。

A 回答 (2件)

No.1です!


たびたびごめんなさい。

前回
>データが変更があるたびに・・・
と書いてしまっているので、コードを訂正させてください。

Sub 振り分け() 'この行から
Dim i, k, N As Long
Dim ws As Worksheet
Set ws = Worksheets(1)
For k = 2 To Worksheets.Count
N = Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Row
If N > 1 Then
Worksheets(k).Rows(2 & ":" & N).Delete
End If
For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row
If ws.Cells(i, 3) = Worksheets(k).Name Then
Range(ws.Cells(i, 1), ws.Cells(i, 2)).Copy Destination:= _
Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Offset(1)
End If
Next i
Next k
End Sub 'この行まで

前回は無視して、こちらのコードをコピー&ペーストしてください。

何度も失礼しました。m(_ _)m
    • good
    • 3

こんばんは!


色々方法はあるかと思いますが・・・
VBAでの一例です。

Sheet1に元データがあり、Sheet2以降のSheet名はSheet1のC列データと同じSheet名が付いているという前提です。
そして、各Sheetとも1行目の項目はすでに入っているとして、
A・B列のみで良いわけですよね?

Alt+F11キー → VBE画面が出ますので、画面左下の「This Workbook」をダブルクリック
→ ↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub 振り分け() 'この行から
Dim i, k As Long
Dim ws As Worksheet
Set ws = Worksheets(1)
For k = 2 To Worksheets.Count
For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row
If ws.Cells(i, 3) = Worksheets(k).Name Then
Range(ws.Cells(i, 1), ws.Cells(i, 2)).Copy Destination:= _
Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Offset(1)
End If
Next i
Next k
End Sub 'この行まで

※ Sheet1のデータ変更があるたびにマクロを実行してください。

ご希望の方法でなかったらごめんなさいね。m(_ _)m
    • good
    • 11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています