2009-06-17 6 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

문제 없습니다. 유용하다고 들었 기 때문에 기쁩니다! –

관련 문제