Решение Array
Настоятельно рекомендуется создать копию исходного файла и сначала проверить там код.Откройте книгу и перейдите к SaveAs и сохраните ее под другим именем, например, «Тест» или что-то в этом роде.Теперь вы готовы «играть».
Перед использованием этого кода вам придется вручную ввести данные в разделе «Настройка» кода.
Такой код в идеале должен сохранять старые данные на семи листах и обновлять только (добавлять новые строки), но он всегда удаляет (ClearContents) старые данные на семи листах, начиная со строки 2, перед добавлением новых данных,Более того, в коде нет обработки ошибок .
С другой стороны, код делает то, что должен делать.Если что-то пойдет не так, лист «Главная страница» не представляет опасности, поэтому, если что-то случится с другими листами, вы всегда можете создать их заново.
Private Sub CommandButton1_Click()
Dim c As Range
Dim i As Integer
Dim j As Integer
Dim Source As Worksheet
Dim Target As Worksheet
Dim arr() As String
'Create an array of data
ReDim arr(1 To 7, 1 To 2) As String
'-- Customize BEGIN --------------------
'Sheet Names
arr(1, 1) = "Charlotte"
arr(2, 1) = ""
arr(3, 1) = ""
arr(4, 1) = ""
arr(5, 1) = ""
arr(6, 1) = ""
arr(7, 1) = ""
'Names in column 'C'
arr(1, 2) = "Charlotte Richardson"
arr(2, 2) = ""
arr(3, 2) = ""
arr(4, 2) = ""
arr(5, 2) = ""
arr(6, 2) = ""
arr(7, 2) = ""
'-- Customize END ----------------------
Set Source = ActiveWorkbook.Worksheets("Front Page")
For i = 1 To 7
j = 2
Set Target = ActiveWorkbook.Worksheets(arr(i, 1))
' ClearContents of Target
Target.Range(j & ":" & Target.Rows.Count).ClearContents
' Start copying to row 2 in target sheet
For Each c In Source.Range("C1:C1000") ' Do 1000 rows
If c = arr(i, 2) Then
Source.Rows(c.Row).Copy Target.Rows(j)
j = j + 1
End If
Next
Next
End Sub
Чтобы полностью понять код, вы должны прочитать о массивах, циклах, диапазонах и любом ключевом слове, который вы видите в коде.