ซึ่งสามารถทำได้มีเพียงสองสูตรง่ายๆสำหรับorder
และscore
คอลัมน์บวกสามเล็กน้อยที่ซับซ้อนมากขึ้นหนึ่งสำหรับname
คอลัมน์
ตั้งค่าสเปรดชีตดังต่อไปนี้:
จากนั้นหลายเซลล์อาเรย์ใส่สูตรเหล่านี้ลงในช่วงที่ระบุ (จำได้ว่าจะไม่รวมรอบ{
และ}
):
สูตร 1 ( D2:D4
):
{=RANK(E2:E4,E2:E4)}
สูตร 2 ( E2:E4
):
{=LARGE(B2:B5,{1;2;3})}
สูตร 3 ( F2:F4
):
{=INDEX(A:A,10^5-MOD(LARGE(10^5*B2:B5+10^5-ROW(B2:B5),{1;2;3}),10^5))}
หากต้องการเปลี่ยนจากผลลัพธ์ 3 อันดับแรกเป็นผลลัพธ์ N อันดับสูงสุดที่ N เป็นตัวเลขที่มีค่ามาก10
ตัวอย่างเช่นแทนที่จะใช้อาร์เรย์แบบตายตัวสำหรับอันดับ{1;2;3;4;5;6;7;8;9;10}
ให้ใช้รายการต่อไปนี้:
ROW(INDEX(X:X,1):INDEX(X:X,10))
ในขณะที่วิธีนี้ใช้ได้ผลก็คือควรแทนที่X:X
ด้วยคอลัมน์ที่ป้อนสูตรด้วยวิธีนี้สูตรจะไม่แตกหากคอลัมน์X
ถูกลบ
นี่เป็นทางออกที่ดีกว่าแพร่หลายมากและสั้นกว่าROW(INDIRECT("1:10"))
เพราะไม่ระเหย
คำอธิบายสูตร:
สองสูตรแรกนั้นตรงไปตรงมาพอสมควร
รุ่นที่ prettified ของสูตรที่สามมีดังนี้:
=
INDEX(
(A:A),
10^5-
MOD(
LARGE(
10^5*B2:B5+10^5-ROW(B2:B5),
{1;2;3}
),
10^5
)
)
สูตรทำงานโดยการแก้ไขคะแนนเพื่อให้มีส่วนประกอบของดัชนีแถวสิบ จากนั้นหลังจากLARGE
เลือกคะแนนที่ปรับเปลี่ยนที่เหมาะสมแล้วดัชนีจะถูกแยกและใช้INDEX()
เพื่อรับชื่อที่สอดคล้องกับคะแนนที่เลือก
การก้าวผ่านสูตรF3
ควรทำให้ชัดเจนยิ่งขึ้น:
10^5*B2:B5
→การ10^5*{40;55;37;55}
→การ{4000000;5500000;3700000;5500000}
ที่คะแนนลดขนาด
10^5-ROW(B2:B5)
→การ10^5-{2;3;4;5}
→การ{99998;99997;99996;99995}
สิบของส่วนประกอบของตัวเลขแถวของคะแนน
{4000000;5500000;3700000;5500000}+{99998;99997;99996;99995}
→ {4099998;5599997;3799996;5599995}
คะแนน "แก้ไข"
LARGE({4099998;5599997;3799996;5599995},{1;2;3})
→ {5599997;5599995;4099998}
ซึ่งเป็นสามอันดับแรกที่ได้รับการแก้ไข
10^5-MOD({5599997;5599995;4099998},10^5)
→การ10^5-{99997;99995;99998}
→การ{3;5;2}
ตัวเลขแถวบนสามคะแนน
INDEX(A:A,{3;5;2})
→การ{B;D;A}
→การD
ตั้งแต่เราอยู่ในเซลล์ที่สองของสูตรอาร์เรย์เข้าหลายเซลล์
หมายเหตุ:
- สูตรที่ prettified ใช้งานได้จริงถ้าป้อน
(A:A)
จะต้องใช้วงเล็บเหลี่ยมเพื่อบังคับA:A
ให้ให้อยู่ในบรรทัดของตัวเอง
- สำหรับคะแนนที่เท่ากันสูตรจะส่งคืนชื่อในลำดับแถวจากน้อยไปหามาก สูตรสามารถปรับเปลี่ยนเพื่อส่งคืนชื่อตามลำดับจากมากไปน้อยโดยใช้หมายเลขแถวธรรมดาแทนส่วนเติมเต็มของหมายเลขแถวสิบเมื่อปรับเปลี่ยนคะแนน:
{=INDEX(A:A,MOD(LARGE(10^5*B2:B5+ROW(B2:B5),{1;2;3}),10^5))}
- มันเป็นไปได้ที่จะสุ่มลำดับของคะแนนที่เหมือนกันโดยการสร้างคะแนนที่แก้ไขด้วยตัวเลขสุ่มระหว่างคะแนนและหมายเลขแถว