У меня есть скрипт, который обрабатывает главный файл и создает отчет для каждого менеджера.В столбце A все строки под mgr 1 сохраняются и печатаются в шаблон, а затем он проходит по всем менеджерам до тех пор, пока данные не закончатся.
Option Explicit
Sub Main()
Dim Wb As Workbook
Dim Data, Last
Dim i As Long, j As Long, k As Long, a As Long
Dim Dest As Range
'Refer to the template
Set Wb = Workbooks("SpecializedSkillsTemplate.xlsx")
'Refer to the destination cell
Set Dest = Wb.Sheets("Manager Summary").Range("B1")
'Read in all data
With ThisWorkbook.Sheets("Sheet7")
Data = .Range("Z2", .Range("A" & Rows.Count).End(xlUp))
End With
Wb.Activate
'Process the data
For i = 1 To UBound(Data)
'Manager changes?
If Data(i, 1) <> Last Then
'Skip the first
If i > 1 Then
'Scroll into the view
Dest.Select
'Save a copy
Wb.SaveCopyAs ThisWorkbook.Path & Application.PathSeparator & _
ValidFileName(Last & "_Assessment.xlsx")
End If
'Clear the employees
Dest.Resize(, Columns.Count - Dest.Column).EntireColumn.ClearContents
'Remember this manager
Last = Data(i, 1)
'Start the next round
j = 0
End If
'Write the employee data into the template
a = 0
For k = 2 To UBound(Data, 2)
Dest.Offset(a, j) = Data(i, k)
a = a + 1
Next
'Next column
j = j + 1
Next
End Sub
Он берет данные из sheet 7
в мастер-файле, но возможно ли иметь еще один цикл For/Next
, который делает это для другого листа?Скажем, у меня есть sheet 8
, и я хочу, чтобы он делал то же самое, брал данные о сотрудниках и транспонировал смещение на столбец, чтобы я мог сравнить два набора.Это возможно?
Я думал добавить что-то вроде:
Dim Data2
With ThisWorkbook.Sheets("Sheet8")
Data2 = .Range("Z2, . Range("A" & Rows.Count).End(xlUp))
End With
, а затем еще один For/Next
Loop:
For x = 1 to UBound(Data2)
If Data2(I,1) <> Last
Next
и т. Д.Кто-нибудь может дать мне знать, если это возможно?