2017-08-14 10 views
-1

私はVBAの初心者です。基本的には、複数のシートのそれぞれの特定の列の値に対して新しいワークブックを生成するコードが必要です。各シートのキーは列グループです。複数のワークシートの列の値に基づいて新しいワークブックを生成

合計で、元のファイルには次の列で6枚あります。 シート一般データ

場所プロジェクトプロジェクトマネージャステータスグループ

シートコスト

場所グループプロジェクトは、先月

場所グループ事業費を

シートコストのコスト先月

シート問題

場所プロジェクトプロジェクトマネージャの問題グループ

また同様に転写されずそのまま保持する必要がWBで他の二つのシートがあります。 (「概要」および「要約」)。 ありがとうございます。

+1

こんにちは、Welcome to Stackoverflow。これはコード作成ウェブサイトではありません。私たちは、あなたのコードであなたが持っている問題は手伝っていますが、コードを実際に書くのではありません。 – Zac

+0

こんにちは、私はそれを簡単にするための手順を理解できません。誰でも、提案付き? – CCP3

答えて

0

ここに私は下書きを持っていますが、それはまた、 "要約"と "概要"のシートをオートフィルタします。したがって、それらは宛先wbに2回コピーされます。

サブSplitWB() Application.EnableEvents = Falseの:Application.ScreenUpdating = Falseの:エラー後藤クリーンアップでApplication.DisplayAlerts = Trueの

Dim ws As Worksheet, wb As Workbook, team 
For Each team In getTeams 
    Set wb = Workbooks.Add ' create a wb for each team with same # of sheets 

    Do Until wb.Worksheets.Count >= ThisWorkbook.Worksheets.Count 
     wb.Worksheets.Add After:=wb.Sheets(wb.Sheets.Count) 
    Loop 

    For Each ws In ThisWorkbook.Worksheets 
    If ws.Name <> "Overview" And ws.Name <> "Summary" Then 
     With ws.UsedRange 
      .AutoFilter 1, team ' filter to copy only the team's rows 
      .Copy wb.Sheets(ws.Index).Range("A1") 
      .AutoFilter 
     End With 
     End If 
     wb.Sheets(ws.Index).Name = ws.Name 


    Next 

    ThisWorkbook.Worksheets("Summary").Copy After:=wb.Sheets(wb.Sheets.Count) 

ThisWorkbook.Worksheets( "概要")後にコピーします。 = wb.Sheets(wb.Sheets.Count) wb.SaveAs "プロジェクト予算の追跡" &チーム& "の.xlsx"

wb.Close False 
Next 

クリーンアップ: Application.EnableEvents =真:Application.ScreenUpdating = Trueの:Application.DisplayAlerts = Trueの End Subの

機能getTeams() 'レンジ、オブジェクト セット辞書として辞書として辞書 薄暗いセル画を使用して独自のチーム名を取得します= "CreateObject(" Scripting.Dictionary ") With ThisWorkbook.Sheets(" Sheet1 ") 各セルごとに.Range(" A2:A "&.Cells(.Rows.Count、" A ")。End(xlUp) .Row) もし getTeamsの=のdict.Keys エンド機能付レン(トリム(cel.Value2))> 0その後のdict(cel.Value2)= 0 次 エンド

関連する問題