Если вы хотите обновить рабочий лист2 при изменении данных в рабочем листе1, вы можете использовать VBA для создания результирующей страницы, которая динамически обновляется.
Эта функция вызывается всякий раз, когда данные в листе 1 изменяются.
Чтобы обновить данные на основе столбца рейтинга и сделать следующие предположения:
Данные находятся в этих столбцах Имя: столбец A, Возраст: столбец B, Пол: столбец C, Категория: столбец D, Общий рейтинг: столбец E
В подпункте Worksheet_Change сравните значение в столбце E, столбце ранжирования и перенесите содержимое строки, если участник занял первые четыре позиции.
'If data is changed within column 5 (ranking column), repopulate worksheet2
If Target.Column = 5 Then
'Remove all of the old rows except the header
Sheets(2).Rows("2:" & CStr(Sheets(2).UsedRange.Rows.Count)).EntireRow.Delete
'For each row on worksheet1 check if the value in column "E", if the ranking column is less than 4, if it is copy the row onto worksheet2
Dim rowCounter As Integer: rowCounter = 1
For i = 1 To Sheets(1).UsedRange.Rows.Count Step 1
If (Sheets(1).Range("E" & CStr(i)).Value < 4 And Sheets(1).Range("E" & CStr(i)).Value <> "") Then
Sheets(2).Range("A" & CStr(rowCounter + 1)).Value = Sheets(1).Range("A" & CStr(i)).Value
Sheets(2).Range("B" & CStr(rowCounter + 1)).Value = Sheets(1).Range("B" & CStr(i)).Value
Sheets(2).Range("C" & CStr(rowCounter + 1)).Value = Sheets(1).Range("C" & CStr(i)).Value
Sheets(2).Range("D" & CStr(rowCounter + 1)).Value = Sheets(1).Range("D" & CStr(i)).Value
Sheets(2).Range("E" & CStr(rowCounter + 1)).Value = Sheets(1).Range("E" & CStr(i)).Value
rowCounter = rowCounter + 1
End If
Next i
End If
Вставьте сюда алгоритм сортировки, если это необходимо, после переноса данных.
Если вам нужна дополнительная информация или помощь в сортировке, пожалуйста, дайте мне знать.