Page 1 of 1
การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 4:44 pm
by ฟงว่อง
ขอความอนุเคราะห์ผูกสูตรการจัดลำดับที่การสอบ
Re: การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 6:31 pm
by DhitiBank
ทดลองแบบนี้ครับ ผมจะใช้คอลัมน์ L มาช่วย
ที่ L12 คีย์
=--(I12&"."&TEXT(H12,"000")&TEXT(G12,"000")&TEXT(F12,"000")&TEXT(LARGE(ROW(INDIRECT("12:"&LOOKUP(9.9999999E+307,A:A,ROW(A:A)))),ROWS($L$12:L12)),"000"))
กด Ctrl+Shift ค้างไว้ แล้วกด Enter
ที่ J12 คีย์
=IF(ISERR(
RANK(L13,
IF(($F$12:$F$20>F$11)*($G$12:$G$20>G$11)*($H$12:$H$20>H$11),$L$12:$L$20,0))-1),0,
RANK(L13,
IF(($F$12:$F$20>F$11)*($G$12:$G$20>G$11)*($H$12:$H$20>H$11),$L$12:$L$20,0))-1)
Enter เฉยๆ ครับ
แล้วคัดลอกสูตรลงด้านล่างครับ
ข้อแม้คือ ผู้สมัครสอบคนแรกต้องอยู่บรรทัดที่ 12 นะครับ หากเริ่มจากบรรทัดอื่นก็ต้องปรับสูตรใหม่
(คิดซะเพลีย

แต่มันดีครับ

)
Re: การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 6:50 pm
by ฟงว่อง
ผมลองทำแล้วเป็นดังไฟล์นบไม่ประมวลผล
2. หากเลื่อนบรรทัดหมายความว่าต้องเปลี่ยน 12 ทุกตัวให้เป็นเลขที่บรรทัดใช่หรือไม่
3. มีวิธีเลี่ยง ctr+shift +enter หรือไม่ ผมลองกี่ครั้งก็ไม่เป็นผล ต้องปรับเครื่องมือในเโปรแกรมหรือไม่ และสูตรล่างใช้กับรุ่น 2003 ได้หรือไม่
ช่อง l12 ปรากฎเพียง 412.0991711 และช่องล่างลงมาขึ้นเป็น #NUM! ส่วนช่องJ12 เป็นสูตรที่ท่านเขียนให้
Re: การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 7:01 pm
by DhitiBank
ไม่พบไฟล์แนบครับ
คำสั่งใช้กับรุ่น 2003 ได้ครับ
Re: การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 7:21 pm
by DhitiBank
ก่อนอื่นขออธิบายเรื่องการกด 3 ปุ่มใหม่นะครับ
สำหรับสูตร
=--(I12&"."&TEXT(H12,"000")&TEXT(G12,"000")&TEXT(F12,"000")&TEXT(LARGE(ROW(INDIRECT("12:"&LOOKUP(9.9999999E+307,A:A,ROW(A:A)))),ROWS($L$12:L12)),"000"))
ต้องกด 3 ปุ่มเพราะต้องคำนวณแบบอาร์เรย์ วิธีการกดคือ
กดปุ่ม Ctrl กับปุ่ม Shift ค้างไว้ (อย่าเพิ่งปล่อยนะครับ จะกดปุ่มไหนก่อนหลังก็ได้ แต่ต้องกดค้างไว้ด้วยกัน) ขณะที่กดค้างอยู่นั้น ก็เคาะ Enter ไปเลย
หากกดถูกต้องจะเห็นเครื่องหมาย { } คร่อมสูตรอยู่ (อย่าคีย์เข้าไปเองนะครับ เพราะผิดกฎ)
แล้วก็... หากผู้สมัครคนแรกไม่ได้เริ่มจากแถวที่ 12 ก็ให้เปลี่ยนตัวเลขตรงที่ระบายสีน้ำเงินไว้ครับ
และสำหรับสูตร
=IF(ISERR(
RANK(L12,
IF(($F$12:$F$20>F$11)*($G$12:$G$20>G$11)*($H$12:$H$20>H$11),$L$12:$L$20,0))-1),0,
RANK(L12,
IF(($F$12:$F$20>F$11)*($G$12:$G$20>G$11)*($H$12:$H$20>H$11),$L$12:$L$20,0))-1)
ก็ปรับตรงตัวหนาๆ หากข้อมูลจริงมีมากกว่าตัวอย่างที่ให้มาครับ
**ขออภัย ผมพิมพ์เลขผิดไปหน่อย ตรง Rank(L13 คีย์ที่เซลล์ J12 ต้องเป็น Rank(L12 ขออภัยครับ
Re: การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 7:29 pm
by ฟงว่อง
ขอบพระคุณในความอนุเคราะห์ของท่านเป็นอย่างยิ่งครับ
Re: การจัดลำดับที่การสอบ
Posted: Sat Apr 18, 2015 7:42 pm
by DhitiBank
ขอปรับสูตรเล็กน้อยครับ
ตรงสูตรสองที่เป็นเครื่องหมาย >
ให้เปลี่ยนเป็น >=
(เปลี่ยนจาก "มากกว่า" เฉยๆ เป็น "มากกว่าหรือเท่ากับ")
Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 5:30 pm
by DhitiBank
ขอปรับสูตรที่เซลล์ J12 ครับ แก้เป็น
=IF(ISNA(MATCH(L12,LARGE(IF(($F$12:$F$22>=F$11)*($G$12:$G$22>=G$11)*($H$12:$H$22>=H$11),$L$12:$L$22),ROW(INDIRECT("1:"&COUNT(L:L)))),0)),0,
MATCH(L12,LARGE(IF(($F$12:$F$22>=F$11)*($G$12:$G$22>=G$11)*($H$12:$H$22>=H$11),$L$12:$L$22),ROW(INDIRECT("1:"&COUNT(L:L)))),0))
Ctrl+Shift+Enter
เพราะดูเหมือนสูตร Rank จะเอาค่าที่แม้ไม่มีใน array (คือคะแนนที่ถือว่าตก) ไปจัดอันดับด้วย ทำให้อันดับของบางคนผิดพลาดครับ เช่น สมมติมีข้อมูลหลัก 3 ค่า คือ
1, 2, 3
แล้วต้องการเอา 2.9 และ 2 ไปจัดอันดับ
=Rank(3.9,{1,2,3}) = #N/A
ผลที่ได้จะผิดพลาดครับ แต่พอคัดลอกสูตรลงเพื่อจัดอันดับเลข 2
=Rank(2,{1,2,3}) = 2
เหมือนกับว่าสูตรเอา 2.9 จำไว้แล้วว่าต้องเป็นที่ 1 พอมาเจอ 2 จึงจัดให้เป็นที่สองทั้งๆที่ 2.9 ส่งผลเป็นค่าผิดพลาด งงนะเนี่ย เพิ่งเคยรู้
ต้องขออภัยด้วยครับ
Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 5:48 pm
by snasui
DhitiBank wrote:=Rank(2,{1,2,3}) = 2
เหมือนกับว่าสูตรเอา 3.9 จำไว้แล้วว่าต้องเป็นที่ 1 พอมาเจอ 2 จึงจัดให้เป็นที่สองทั้งๆที่ 3.9 ส่งผลเป็นค่าผิดพลาด งงนะเนี่ย เพิ่งเคยรู้

ผมอ่านจากทีเขียนมา ไม่ได้ทดสอบสูตรในโพสต์ก่อนหน้าครับ
จากไวยากรณ์ของ Rank
=Rank(number,ref,[order])
ตามด้านบนตัวเลข 3.9 ไม่ถูกนำมาเกียวข้องแล้วครับ สูตรจะพิจารณาจาก Ref {1,2,3} เลข 2 เมื่อเรียงแล้วใหญ่เป็นอันดับ 2 ของ Ref ส่วนตัวที่ใหญ่เป็นอันดับ 1 คือ 3 ตัวที่ใหญ่เป็นอันดับ 3 คือ 1
!
| Note: Ref ที่คีย์มาเป็นค่าคงที่ Array เพื่อความเข้าใจเท่านั้น เราไม่สามารถคีย์ค่าคงที่ Array เพื่อใช้กับ Rank ได้ครับ |
Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 7:09 pm
by DhitiBank
ขอบพระคุณครับอาจารย์ และขออภัยที่ด้านบนผมพิมพ์ผิดเป็น 3.9 ผมนึกไว้ว่า 2.9 แต่ดันคีย์อีกแบบหนึ่ง
เอาใหม่เลยครับ ตามไฟล์แนบ
ผมมี 3 คอลัมน์คือ
A=> เงื่อนไข
B=> เลขที่จะจัดอันดับ
C=> ผลการจัด
แต่เงื่อนไขการจัดในคอลัมน์ C คือจะเอาเลขใน B ที่มีเงื่อนไขในคอลัมน์ A เท่ากับ 1 มาจัดผมคีย์สูตรใน C2 เป็น
=rank(b2,if($a$2:$a$5,$b$2:$b$5))
จากตัวอย่าง เลข 3 ไม่เอามาจัดอันดับเพราะเงื่อนไขไม่ผ่าน แต่พอตอนจัดอันดับ มันเหมือนกับ RANK เก็บอันดับที่ 2 ซึ่งเลข 3 ควรจะได้เอาไว้ ทั้งๆที่เลข 3 ถูกตัดออกจากอาร์เรย์ที่จะเอามาจัดอันดับแล้ว เลยงงครับ ก็เลยเปลี่ยนสูตรใหม่ตามด้านบนนู้นครับ
Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 7:46 pm
by snasui

ฟังก์ชั่น Rank ไม่สามารถมีสวนประกอบเป็น Array ได้ครับ
จากตัวอย่างที่ให้มานั้น สูตร If ต้องทำเป็น Array โดยกดแป้น Ctrl+Shift+Enter ไม่เช่นนั้นไม่สามารถแสดงเป็น Array ได้ เมื่อเป็น Array ได้ก็จะเกิดค่าผิดพลาดเนื่องด้วยถูกบังคับให้ใช้เป็น Ref คืออ้างอิงช่วงเซลล์มาใช้เท่านั้น ไม่สามารถใช้ Array ได้
สามารถปรับสูตรอื่นมาใช้สำหรับการจัดลำดับ เช่นด้านล่างครับ
เซลล์ C2 คีย์สูตร
=IF(A2,SUMPRODUCT($A$2:$A$5,--($B$2:$B$5>B2))+1,0)
Enter > Copy ลงด้านล่าง
Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 8:20 pm
by DhitiBank
อ๋อ แบบนี้นี่เอง ขอบคุณอาจารย์มากครับ ขอทำความเข้าใจสูตรก่อน จดๆๆๆ

Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 8:29 pm
by DhitiBank
ตรง IF พอดีทำจากมือถือ เลยกดแบบอาร์เรย์ไม่ได้ ครับ อาจารย์พอมีแอปที่ใส่สูตรแบบอาร์เรย์ได้ไหมครับ ระบบแอนดรอยด์?
Re: การจัดลำดับที่การสอบ
Posted: Sun Apr 19, 2015 8:43 pm
by snasui

ผมไม่ค่อยได้เล่น App ต่าง ๆ เลยไม่แน่ใจว่ามีผู้ทำออกมาใช้บ้างหรือไม่ครับ
Re: การจัดลำดับที่การสอบ
Posted: Mon Apr 20, 2015 7:15 pm
by menem
ลองดูนะครับ สูตรที่ผมใช้ ไม่มีการใช้ Array
Re: การจัดลำดับที่การสอบ
Posted: Mon Apr 20, 2015 10:46 pm
by DhitiBank
menem wrote:ลองดูนะครับ สูตรที่ผมใช้ ไม่มีการใช้ Array

ได้แนวคิดใหม่ๆ ขอบคุณครับ
Re: การจัดลำดับที่การสอบ
Posted: Tue Apr 21, 2015 8:41 am
by ฟงว่อง
ขอบพระคุณท่านเป็นอย่างยิ่งเช่นกัน