Excel: วิธีการแสดง“ ผู้ชนะ” 3 อันดับแรกตามอายุและเพศอย่างไร


1

ฉันต้องการใช้ Excel เพื่อจัดการข้อมูลสำหรับการวิ่งมาราธอน ผู้โชคดีกลุ่มมาราธอนโดยageและgenderเป็นและรางวัลรางวัลแรกไปยังสถานที่ที่สามในแต่ละcategorycategory

Excel สามารถใช้ในการกำหนดผู้ชนะแบบไดนามิกโดยการป้อนข้อมูลลงในแผ่นงานแผ่นเดียวและมีการคำนวณผลลัพธ์โดยอัตโนมัติและแสดงบนแผ่นงานอื่นด้วยวิธีใดวิธีหนึ่งหรือไม่

ฉันมีแผ่นงานแผ่นเดียวที่มีข้อมูลต่อไปนี้สำหรับแต่ละแถว:

name, age, gender, age category, overall rank

ฉันเปิดรับฟังก์ชั่นตาม VBA และ Excel ขอบคุณ!

คำตอบ:


2

หากคุณต้องการอัปเดตเวิร์กชีท 2 เมื่อมีการแก้ไขข้อมูลในเวิร์กชีท 1 คุณสามารถใช้ VBA เพื่อสร้างหน้าผลลัพธ์ที่ปรับปรุงแบบไดนามิก

  • ในแท็บผู้พัฒนาคลิก visual พื้นฐาน
  • ขยายโฟลเดอร์วัตถุ Microsoft Excel และดูรหัสสำหรับ Sheet1
  • สร้างฟังก์ชั่นใหม่ที่เรียกว่า:

    Private Sub Worksheet_ChangeByVal Target As Range)
    EndSub
    

ฟังก์ชันนี้ถูกเรียกใช้เมื่อใดก็ตามที่มีการแก้ไขข้อมูลในแผ่นงาน 1

ในการอัปเดตข้อมูลตามคอลัมน์อันดับและทำการตั้งสมมติฐานเหล่านี้:
ข้อมูลอยู่ในคอลัมน์เหล่านี้ชื่อ: คอลัมน์ A, อายุ: คอลัมน์ B, เพศ: คอลัมน์ C, หมวดหมู่: คอลัมน์ D, อันดับรวม: คอลัมน์ E

ภายในเวิร์กชีทย่อย _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

แทรกอัลกอริทึมการเรียงลำดับที่นี่หากจำเป็นหลังจากข้อมูลถูกย้ายแล้ว

หากคุณต้องการรายละเอียดเพิ่มเติมหรือความช่วยเหลือเกี่ยวกับการเรียงลำดับโปรดแจ้งให้เราทราบ


นี่คือวิธีการที่ดีที่สุดสำหรับฉันชอบสิ่งต่าง ๆ ในการทำงาน ... ฉันจะโพสต์กลับและอัปเดตคำตอบของคุณเมื่อฉันทำเสร็จแล้ว ขอบคุณสำหรับความช่วยเหลือของคุณ!
Brad Parks

นี่คือสเปรดชีตที่ทำด้านบน ขอบคุณสำหรับคำแนะนำ! ฉันรวม "หมวดหมู่" และ "อายุ" ไว้ในหมวดหมู่เดียว "หมวดหมู่อายุ" ที่เคยทำเช่นนี้ การเปลี่ยนคอลัมน์ "ตำแหน่ง" จะสร้างแผ่นงานใหม่ "ผู้ชนะ" โดยใช้รายการหมวดหมู่ที่กำหนดไว้ในแผ่นงาน "การกำหนดค่า" dropbox.com/s/i8aikva8m8mgzby/…
Brad Parks

1
ทำได้ดีมากนั่นก็เป็นแนวทางของฉันเช่นกันในการจัดเรียงข้อมูล
CdeoEm

2

ใช่. สิ่งที่คุณอธิบายคือตารางเดือย คลิกเซลล์ในแหล่งข้อมูลของคุณแล้วแทรกตารางเดือยที่ตกลง โดยค่าเริ่มต้นมันจะถูกสร้างขึ้นในแผ่นงานใหม่ ลากกลุ่มอายุเพศและชื่อลงในพื้นที่แถวและจัดอันดับลงในพื้นที่ค่า

คลิกขวาที่ชื่อใด ๆ ใน pivot และใช้ตัวกรอง> อันดับ 10 สมมติว่าอันดับสูงสุดคือ 1 เปลี่ยน "Top" เป็น "Bottom", 10 เป็น 3 และคุณจะได้สิ่งที่คล้ายกับสิ่งนี้ :

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณยึดตารางเดือยบนตาราง Excel (ที่สร้างด้วยแทรก> ตาราง) คุณสามารถเพิ่มข้อมูลลงในตารางต้นฉบับรีเฟรชตารางเดือย (บน Ribbon เครื่องมือ Pivot) และผลลัพธ์ปัจจุบันจะปรากฏขึ้น

สำเนาของไฟล์คือที่นี่


น่ารัก .. นี่ฟังดูเหมือนฉันหวังว่าฉันจะทำ ฉันจะลองคืนนี้และแจ้งให้คุณทราบ ... ชื่นชมมาก!
Brad Parks

ฉันลองสิ่งนี้ แต่ไม่สามารถรับ Pivot Table เพื่อจัดเรียงอย่างถูกต้องในการจัดอันดับ ฉันแน่ใจว่ามันเป็นเรื่องง่ายที่ฉันหายไป! คุณสามารถโพสต์สเปรดชีตตัวอย่างของคุณได้ไหม บางทีฉันสามารถทำงานจากที่นั่น ขอบคุณ!
Brad Parks

ฉันเพิ่มลิงค์ไปยังไฟล์ตัวอย่าง
teylyn

1

สำหรับหมวดหมู่อายุคุณสามารถลองจัดกลุ่มเข้าด้วยกันโดยใช้

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

จนกว่าหมวดหมู่ทั้งหมดจะถูกกรอก หลังจากนั้นเลือกตัวกรองภายใต้ข้อมูล สิ่งนี้จะช่วยให้คุณสามารถจัดเรียงตามกลุ่มอายุหรือเพศ (เช่นถ้าคุณต้องการจัดเรียงตามเพศ):

  1. คลิกที่ลูกศรชี้ลงด้านข้างส่วนหัวของเพศสภาพ
  2. เลือกเฉพาะผู้ชายหรือผู้หญิงเท่านั้น
  3. คลิกลูกศรลงนอกเหนือจากช่วงเวลา (ฉันคิดว่าคุณจะมีเวลามุ่งหน้าเพื่อตัดสินผู้ชนะ)
  4. จัดเรียงจาก A ถึง Z เนื่องจากจะแสดงขนาดที่เล็กที่สุดไปหามากที่สุดและผู้ชนะรางวัลจะเป็นช่วงเวลาที่เล็กที่สุด

ทำเช่นเดียวกันกับหมวดหมู่อื่นและคุณจะพบผู้ชนะรางวัลของคุณ

ไชโย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.