1
我有一個用於按項目跟蹤任務的Excel工作簿。每個項目在工作簿中都有自己的工作表。Excel:用匹配的行填充工作表
在每個工作表中,每個工作項目都有行,第一列包含工作項目分配給的人員的姓名。這些行不按名稱排序。
我想要創建一個工作表,它會自動遍歷每個工作表(除活動工作表外)並拉入分配給某個人的所有行。
任何人都知道VBA宏將爲我照顧這個?
我有一個用於按項目跟蹤任務的Excel工作簿。每個項目在工作簿中都有自己的工作表。Excel:用匹配的行填充工作表
在每個工作表中,每個工作項目都有行,第一列包含工作項目分配給的人員的姓名。這些行不按名稱排序。
我想要創建一個工作表,它會自動遍歷每個工作表(除活動工作表外)並拉入分配給某個人的所有行。
任何人都知道VBA宏將爲我照顧這個?
這應該讓你開始:
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
一些非常細微的調整,這也正是我一直在尋找。 謝謝你把它放在一起! – Matt 2009-06-17 18:17:11