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

Нет проблем. Я рад, что это было полезно! –

Смежные вопросы