2009-06-17 56 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 2009-06-17 18:17:11

相关问题