2009-06-17 8 views
1

プロジェクトごとにタスクを追跡するために使用されるExcelブックがあります。各プロジェクトには、ワークブックに独自のワークシートがあります。Excel:一致する行をワークシートに取り込みます。

各ワークシートには、各作業項目の行があり、最初の列には作業項目が割り当てられているユーザーの名前が含まれています。これらの行は名前でソートされません。

各ワークシート(アクティブシート以外)を自動的に通過し、特定の人物に割り当てられたすべての行をプルするワークシートを作成したいとします。

誰かが私のためにこれを処理するVBAマクロを知っていますか?

答えて

1

これは、あなたが始める必要があります。

Option Explicit 

'// change this name to generate a report for a different user //' 
Const activeUser = "Alex" 

'// change these values to fit your data //' 
Const maxTasks = 100 
Const maxCols = 10 

Public Sub BuildSummary() 
    Dim projectIndex As Integer 
    Dim projectSheet As Worksheet 
    Dim taskIndex As Integer 
    Dim summaryRow As Integer 

    summaryRow = 1 
    For projectIndex = 1 To ActiveWorkbook.Worksheets.Count 
     Set projectSheet = ActiveWorkbook.Worksheets(projectIndex) 
     If projectSheet.Index <> ActiveSheet.Index Then 

      '// insert a row with the name of the project //' 
      ActiveSheet.Cells(summaryRow, 1).Value = projectSheet.Name 
      summaryRow = summaryRow + 1 

      '// search for the active user in each task //' 
      For taskIndex = 1 To maxTasks 
       If projectSheet.Cells(taskIndex, 2).Value = activeUser Then 

        '// copy the relevant rows to the summary sheet //' 
        projectSheet.Range(projectSheet.Cells(taskIndex, 1), _ 
         projectSheet.Cells(taskIndex, maxCols)).Copy 
        ActiveSheet.Range(ActiveSheet.Cells(summaryRow, 1), _ 
         ActiveSheet.Cells(summaryRow, maxCols)).Select 
        ActiveSheet.Paste 
        summaryRow = summaryRow + 1 
       End If 
      Next taskIndex 
     End If 
    Next projectIndex 

    ActiveSheet.Cells(1, 1).Select 
End Sub 
+0

をいくつかの非常にわずかな調整で、これは私が探していたまさにでした。 これをまとめてくれてありがとう! – Matt

+0

問題ありません。それが役に立つと聞いてうれしいです! –

関連する問題