Excel: 연령 및 성별 상위 3개 "수상자"를 표시하는 방법은 무엇입니까?

Excel: 연령 및 성별 상위 3개 "수상자"를 표시하는 방법은 무엇입니까?

마라톤 데이터를 Excel을 사용하여 관리하고 싶습니다. 마라톤은 우승자를 로 그룹화 하고 age각 1위부터 3위까지 상금을 수여합니다 .gendercategorycategory

Excel을 사용하여 단일 워크시트에 데이터를 입력하고 결과를 자동으로 계산하여 어떤 방식으로든 다른 워크시트에 표시함으로써 승자를 동적으로 결정할 수 있습니까?

각 행에 대해 다음 데이터를 포함하는 단일 워크시트가 있습니다.

name, age, gender, age category, overall rank

저는 VBA 및 Excel 함수 기반 접근 방식에 열려 있습니다. 감사해요!

답변1

worksheet1의 데이터가 수정될 때 worksheet2를 업데이트하려면 VBA를 사용하여 동적으로 업데이트되는 결과 페이지를 만들 수 있습니다.

  • 개발자 탭에서 비주얼 베이직을 클릭하세요.
  • Microsoft Excel 개체 폴더를 확장하고 Sheet1의 코드를 봅니다.
  • 다음과 같은 새 함수를 만듭니다.

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

이 함수는 worksheet1의 데이터가 수정될 때마다 호출됩니다.

순위 열을 기반으로 데이터를 업데이트하고 다음 가정을 수행하려면
데이터가 다음 열 내에 있습니다. 이름: A 열, 나이: B 열, 성별: C 열, 범주: D 열, 전체 순위: E 열

Worksheet_Change 하위 비교 내 순위 열인 E 열의 값을 입력하고 경쟁자가 상위 4개 위치에 배치된 경우 행 내용을 이전합니다.

'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

데이터가 마이그레이션된 후 필요한 경우 여기에 정렬 알고리즘을 삽입하세요.

더 자세한 내용이 필요하거나 정렬에 도움이 필요하면 알려주시기 바랍니다.

답변2

예. 당신이 설명하는 것은 피벗 테이블입니다. 소스 데이터 탭에서 셀을 클릭하고 피벗 테이블을 삽입한 후 확인을 누르세요. 기본적으로 새 시트에 생성됩니다. 연령 그룹, 성별, 이름을 행 영역으로 드래그하고 순위를 값 영역으로 드래그합니다.

피벗의 이름 중 하나를 마우스 오른쪽 버튼으로 클릭하고 필터 > 상위 10을 사용합니다. 상위 순위가 1이라고 가정하고 "상위"를 "하위"로 변경하고 10을 3으로 변경하면 다음과 비슷한 결과가 나타납니다. :

여기에 이미지 설명을 입력하세요

삽입 > 테이블을 사용하여 생성된 Excel 테이블을 기반으로 피벗 테이블을 만드는 경우 원본 테이블에 데이터를 추가하고 피벗 테이블을 새로 고치면(피벗 도구 리본에서) 현재 결과가 표시됩니다.

파일의 복사본은 다음과 같습니다.여기.

답변3

연령 카테고리의 경우 다음을 사용하여 그룹화할 수 있습니다.

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

모든 카테고리가 채워질 때까지. 그런 다음 데이터 아래에서 필터를 선택합니다. 이를 통해 연령별, 성별별로 정렬할 수 있습니다. (예: 성별을 기준으로 정렬하려는 경우):

  1. 성별 제목 옆에 있는 아래쪽 화살표를 클릭하세요.
  2. 남자만 선택하거나 여자만 선택하세요.
  3. 타이밍 제목 옆에 있는 아래쪽 화살표를 클릭합니다(승자를 결정하는 타이밍 제목이 있을 것으로 가정합니다).
  4. 가장 작은 것부터 가장 큰 것까지 표시되고 수상자는 가장 작은 타이밍이 되기 때문에 A부터 Z까지 정렬합니다.

다른 카테고리에 대해서도 동일한 작업을 수행하면 수상자를 찾을 수 있습니다.

건배

관련 정보