Excel: Làm thế nào để hiển thị 3 người chiến thắng hàng đầu trên thế giới theo tuổi và giới tính?


1

Tôi muốn sử dụng Excel để quản lý dữ liệu cho một cuộc đua maratông. Những người chiến thắng trong nhóm marathon agegender thành một categoryvà giải thưởng cho vị trí thứ nhất đến thứ ba trong mỗi category.

Excel có thể được sử dụng để xác định người chiến thắng một cách linh hoạt, bằng cách nhập dữ liệu trên một bảng tính và có kết quả tự động được tính toán và hiển thị trên một bảng tính khác theo cách nào đó không?

Tôi đã có một bảng tính chứa dữ liệu sau cho mỗi hàng:

name, age, gender, age category, overall rank

Tôi đang mở các cách tiếp cận dựa trên chức năng VBA và Excel. Cảm ơn!

Câu trả lời:


2

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.

  • Trong tab nhà phát triển bấm vào hình ảnh cơ bản.
  • Mở rộng thư mục Đối tượng Microsoft Excel và xem mã cho Trang tính 1
  • Tạo một chức năng mới gọi là:

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

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.


Đây là cách tiếp cận phù hợp nhất với cách tôi thích mọi thứ hoạt động ... Tôi sẽ đăng lại và cập nhật câu trả lời của bạn khi tôi hoàn thành. Cảm ơn bạn đã giúp đỡ!
Brad Parks

Đây là một bảng tính làm như trên. Cám ơn vì sự gợi ý! Tôi đã hợp nhất "danh mục" và "tuổi" thành một danh mục "Danh mục tuổi" duy nhất được sử dụng để thực hiện việc này. Thay đổi cột "Vị trí" sẽ tạo lại bảng "Người chiến thắng" bằng cách sử dụng danh sách danh mục được xác định trên trang tính "Cấu hình" dropbox.com/s/i8aikva8m8mgzby/
Brad Parks

1
Hoàn thành tốt, đó cũng là cách tiếp cận của tôi để sắp xếp dữ liệu.
CdeoEm

2

Vâng. Những gì bạn mô tả là một bảng trụ. Nhấp vào một ô trong tab dữ liệu nguồn của bạn, chèn bảng xoay vòng nhấn OK. Theo mặc định, nó sẽ được tạo trong một trang tính mới. Kéo nhóm Tuổi, giới tính và tên vào khu vực hàng và xếp hạng vào khu vực giá trị.

Nhấp chuột phải vào bất kỳ tên nào trong trục và sử dụng Bộ lọc & gt; Top 10. Giả sử thứ hạng hàng đầu là 1, Thay đổi "Top" thành "Dưới cùng", 10 thành 3 và bạn sẽ kết thúc với thứ tương tự như thế này:

enter image description here

Nếu bạn căn cứ bảng xoay vòng trên Bảng Excel (đã được tạo bằng Bảng chèn & gt;), thì bạn có thể thêm dữ liệu vào bảng nguồn, làm mới bảng xoay vòng (trên ruy-băng công cụ Pivot) và kết quả hiện tại sẽ hiển thị.

Một bản sao của tập tin là đây .


Ngọt ngào .. điều này nghe có vẻ giống như những gì tôi đã hy vọng tôi có thể làm. Tôi sẽ thử điều này tối nay và cho bạn biết ... rất cảm kích!
Brad Parks

Tôi đã thử điều này nhưng không thể lấy Bảng Pivot để sắp xếp chính xác trên bảng xếp hạng. Tôi chắc chắn rằng nó thiếu một cái gì đó đơn giản! Bạn có thể gửi bảng tính ví dụ của bạn ở đâu đó? Có lẽ tôi có thể làm việc đó từ đó. Cảm ơn!
Brad Parks

Tôi đã thêm một liên kết đến một tập tin mẫu.
teylyn

1

đối với loại tuổi bạn có thể thử nhóm chúng lại với nhau bằng cách sử dụng

=IF(*ConditionForCatI*,CatI,IF(*ConditionForCatII*,CatII,...)))

cho đến khi tất cả các thể loại được lấp đầy Sau đó chọn bộ lọc theo dữ liệu. Điều này sẽ cho phép bạn sắp xếp chúng theo nhóm tuổi hoặc giới tính. (ví dụ: nếu bạn muốn sắp xếp theo giới tính):

  1. nhấp vào mũi tên xuống bên cạnh tiêu đề giới tính
  2. chỉ chọn nam hoặc chỉ nữ
  3. nhấp vào mũi tên xuống bên cạnh tiêu đề thời gian (Tôi giả sử bạn sẽ có tiêu đề thời gian để quyết định người chiến thắng)
  4. Sắp xếp từ A đến Z vì nó sẽ hiển thị nhỏ nhất đến lớn nhất và người chiến thắng giải thưởng sẽ là thời gian nhỏ nhất

Làm tương tự cho các hạng mục khác và bạn có thể tìm thấy người chiến thắng giải thưởng của bạn.

Chúc mừng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.