Page 1 of 1

อยากสั่งเรียงข้อมูลแบบอัตโนมัตไว้ล่วงหน้า

Posted: Tue Apr 06, 2010 1:28 pm
by somkem
คือผมมีข้อมูล2ชีต
ชึต 1 คือผลการเรียนหลายวิชา เช่น
ไทย คณิต วิทย์ รวม ลำดับที่ (ใช้ rank)
80 50 70 200 2
50 45 60 145 3
87 54 80 221 1
เมื่อป้อนเสร็จ
ต้องการให้ ชีต 2 จัดเรียงอัตโนมัติไว้ล่วงหน้าไม่ต้องใช้จัดเรียงทีหลัง
ไทย คณิต วิทย์ รวม ลำดับที่
87 54 80 221 1
80 50 70 200 2
50 45 60 145 3

Re: อยากสั่งเรียงข้อมูลแบบอัตโนมัตไว้ล่วงหน้า

Posted: Tue Apr 06, 2010 1:53 pm
by snasui
:lol: ดูตามไฟล์แนบครับ :ard: :mrgreen:

ที่ Sheet2

1. เซลล์ F1 หาค่าลำดับที่มากที่สุดใน Sheet1 คีย์

=MAX(Sheet1!E:E)

Enter

2. ที่ A2 เพื่อเรียงลำดับใหม่คีย์

=IF(ROWS(A$2:A2)>$F$1,"",INDEX(Sheet1!A$2:A$4,MATCH(ROWS(A$2:A2),Sheet1!$E$2:$E$4,0)))

Enter > Copy ไปด้านขวาและลงด้านล่าง :mrgreen:

Re: อยากสั่งเรียงข้อมูลแบบอัตโนมัตไว้ล่วงหน้า

Posted: Tue Apr 06, 2010 3:37 pm
by somkem
ติดปัญหาอีกนิดครับ
ถ้าคนที่ได้อันดับเท่ากันจะแก้อย่างไรครับ
ผมส่งไฟล์มาให้ดูครับ

Re: อยากสั่งเรียงข้อมูลแบบอัตโนมัตไว้ล่วงหน้า

Posted: Tue Apr 06, 2010 4:19 pm
by snasui
:lol: วิธีหนึ่งคือเพิ่มสูตรเพื่อให้ลำดับใหม่เพื่อไม่ให้ซ้ำ ส่วนอีกวิธีใช้สูตรแบบ Array ซึ่งซับซ้อน ขอแนะนำวิธีแรกเพื่อให้ง่ายต่อการใช้งานครับ ดูไฟล์แนบประกอบ :ard: ครับ

1. Sheet1 เซลล์ Y5 คีย์

=SUMPRODUCT(--(X5>$X$5:$X$41))+COUNTIF($X$5:X5,X5)

Enter > Copy ลงด้านล่าง

2. Sheet2 เซลล์ Y1 คีย์

=MAX(Sheet1!Y:Y)

Enter

3. Sheet2 เซลล์ A5 คีย์

=IF(ROWS(A5:A$5)>$Y$1,"",INDEX(Sheet1!A$5:A$42,MATCH(ROWS(A5:A$5),Sheet1!$Y$5:$Y$42,0)))

Enter > Copy ไปด้านขวาและลงด้านล่าง :mrgreen: