Nếu bạn muốn cập nhật trang tính 2 khi dữ liệu trong trang tính 1 được sửa đổi, bạn có thể sử dụng VBA để tạo một trang kết quả được cập nhật động.
Hàm này được gọi bất cứ khi nào dữ liệu trong trang tính 1 được sửa đổi.
Để cập nhật dữ liệu dựa trên cột xếp hạng và đưa ra các giả định sau:
Dữ liệu nằm trong các cột này Tên: cột A, Tuổi: cột B, Giới tính: cột C, Danh mục: cột D, Xếp hạng tổng thể: cột E
Trong phụ Worksheet_Change so sánh giá trị trong cột E, cột xếp hạng và chuyển nội dung hàng nếu đối thủ cạnh tranh đã đặt trong bốn vị trí hàng đầu.
'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
Chèn một thuật toán sắp xếp ở đây nếu nó được yêu cầu, sau khi dữ liệu đã được di chuyển.
Nếu bạn cần thêm chi tiết hoặc giúp đỡ với việc sắp xếp xin vui lòng cho tôi biết.