snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
amlu
Member
Posts: 10 Joined: Sun Jun 19, 2016 12:50 am
#1
Post
by amlu » Mon Jun 20, 2016 6:55 pm
เรียน อาจารย์
รบกวนสอบถาม เกี่ยวกับการเรียงอันดับข้อมูลในช่องสามเกมส์สูงสุดจากมากไปน้อย โดยคะแนนที่จะนำมาเรียงนั้นต้องอยู่ภายใต้เงื่อนไขที่ว่า ช่องเกมส์จะต้องมีค่ามากกว่าเท่ากับ 10 ค่ะ สำหรับผลลัพธ์ที่ต้องการคือได้รายละเอียดของผู้ทำคะแนนสูงสุดจากมากไปน้อย 10 อันดับ และทุกคนที่ติดอันดับต้องมีช่องเกมส์มากกว่าเท่ากับ 10 ขึ้นไปค่ะ และหากมีคะแนนซ้ำกันให้เรียงคะแนนซ้ำดังกล่าวเป็นคนละอันดับ เช่น อันดับ 3 และ 4 คะแนนเท่ากัน เป็นต้นค่ะ
ทั้งนี้ได้พยายามลองเขียนสูตรดูแล้ว ผลที่ได้กลายเป็นสูตรเรียงลำดับเลขที่แถวที่มากที่สุดให้ แทนที่จะเรียงลำดับคะแนนอย่างที่ต้องการค่ะ
จึงต้องขอรบกวนอาจารย์และผู้รู้ในบอร์ดนี้ด้วยค่ะ ขอบคุณมากค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31258 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#2
Post
by snasui » Mon Jun 20, 2016 7:11 pm
ตัวอย่างสูตรครับ
ที่ชีท F เซลล์ I2 คีย์
=IF(G2<10,"",SUMPRODUCT(--(H2<$H$2:$H$11),--($G$2:$G$11>=10))+COUNTIFS(H$2:H2,H2,G$2:G2,">=10"))
Enter > Copy ลงด้านล่าง > นำค่าในคอลัมน์ I ที่ได้นี้ไปใช้ตามต้องการ
amlu
Member
Posts: 10 Joined: Sun Jun 19, 2016 12:50 am
#3
Post
by amlu » Mon Jun 20, 2016 7:49 pm
เรียน อาจารย์
ได้ลองนำสูตรที่อาจารย์เขียนให้ไปใช้แล้วค่ะ ได้ผลเป็นการเรียงลำดับ โดยยังคงตัวซ้ำตามที่ต้องการ
แต่เนื่องจากจะต้องนำคะแนนซึ่งเรียงลำดับ ไปใช่งานต่อในชีท Top10 ซึ่งต้องการดึงข้อมูล ชื่อ-นามสกุล ทีม ชื่อทีม และคะแนน โดยเรียงลำดับ 10 อันดับผู้ได้คะแนนสูงสุด ทั้งนี้ได้ลองนำสูตร Index ร่วมกับ Large / Small เพื่อดึงข้อมูลกลับมา แต่ไม่สำเร็จ จึงอยากขอคำแนะนำในการดึงข้อมูลและเรียงให้ข้อมูลอยู่ในชีท Top10 ดังกล่าวเพิ่มเติมค่ะ
ขอบคุณค่ะ
snasui
Site Admin
Posts: 31258 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#4
Post
by snasui » Mon Jun 20, 2016 8:48 pm
แนบไฟล์ที่ได้ลองทำตามสูตรนั้นมาแล้ว พร้อมทั้งชี้ให้เห็นว่าผิดพลาดอย่างไร ค่าที่ถูกเป็นอย่างไร คิดอย่างไรจึงได้ค่าเท่านั้น จะได้ช่วยตอบต่อไปได้
การจะนำข้อมูลไปแสดงที่ใดนั้นไม่ใช่ปัญหา จะนำไปแสดงข้ามไฟล์ ข้ามเครื่องก็ย่อมได้ ขอให้ได้คำตอบเบื้องต้นก่อนครับ
amlu
Member
Posts: 10 Joined: Sun Jun 19, 2016 12:50 am
#5
Post
by amlu » Tue Jun 21, 2016 2:50 pm
ค่าที่ถูกคือค่าในชีท Top10 ค่ะ ซึ่งได้ใช้ Index มาดึงข้อมูลจากสูตรที่อาจารย์เขียนให้
แต่เมื่อลองจะนำสูตรที่อาจารย์เขียนให้ มาใส่เข้าไปใน index เพื่อไม่ต้องเพิ่มคอลัมน์ในชีท F แต่สามารถให้ข้อมูลในชีท Top10 ออกมาได้อย่างที่ต้องการ กลับทำแล้วไม่ได้ค่ะ จึงต้องรบกวนอาจารย์ให้ช่วยชี้แนะด้วยค่ะ
ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
logic
Gold
Posts: 1511 Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365
#6
Post
by logic » Tue Jun 21, 2016 3:19 pm
ลองดูว่าใช่ที่ต้องการไหมครับ
ชีต Top 10
G4 =LARGE(IF(F!$G$2:$G$11>=10,F!$H$2:$H$11),ROWS(G$4:G4))
C4 =INDEX(F!B$2:B$11,SMALL(IF(F!$H$2:$H$11=$G4,ROW(F!$A$2:$A$11)-ROW(F!$A$2)+1),COUNTIF($G$4:$G4,$G4)))
ทั้งสองเซลล์กดแป้นแบบอาร์เรย์ (ctrl+shift+enter) แล้วค่อยคัดลอก G4 ไปยังเซลล์อื่น
amlu
Member
Posts: 10 Joined: Sun Jun 19, 2016 12:50 am
#7
Post
by amlu » Tue Jun 21, 2016 3:54 pm
ใช่ตามที่ต้องการเลยค่ะ
แต่มีคำถามเพิ่มเติมที่ยังสงสัยอยู่นิดหน่อยค่ะ
1. ที่เซลล์ C4 ทำไมถึงต้องเป็น ROW(F!$A$2:$A$11)-ROW(F!$A$2)+1)
2. การใส่ Countif แทนลำดับที่ที่ต้องการให้ฟังก์ชั่น Small ดึงมา เพื่อทำให้ออกทุกค่า รวมไปถึงค่าซ้ำใช่ไหมคะ
ขอบคุณมากนะคะอาจารย์
snasui
Site Admin
Posts: 31258 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#8
Post
by snasui » Tue Jun 21, 2016 6:34 pm
amlu wrote: 1. ที่เซลล์ C4 ทำไมถึงต้องเป็น ROW(F!$A$2:$A$11)-ROW(F!$A$2)+1)
ดูคำอธิบายอย่างละเอียดที่ Link นี้ครับ
viewtopic.php?p=17983#p17983
amlu wrote: 2. การใส่ Countif แทนลำดับที่ที่ต้องการให้ฟังก์ชั่น Small ดึงมา เพื่อทำให้ออกทุกค่า รวมไปถึงค่าซ้ำใช่ไหมคะ
การใส่ Countif เพื่อให้แสดงรายการค่าที่ซ้ำกันเป็นลำดับไปได้ทุกตัว ไม่ใช่นำเฉพาะตัวที่พบตัวแรกมาแสดง
นั่นคือ พบค่าที่ซ้ำกันตัวแรกคือ Small ตัวที่ 1, พบตัวที่ 2 คือ Small ตัวที่ 2 เช่นนี้ครับ
amlu
Member
Posts: 10 Joined: Sun Jun 19, 2016 12:50 am
#9
Post
by amlu » Tue Jun 21, 2016 6:36 pm
ขอบคุณสำหรับคำอธิบายนะคะ