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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
leelaphoom
Member
Posts: 21 Joined: Mon Mar 03, 2014 11:15 pm
#1
Post
by leelaphoom » Fri Apr 03, 2015 2:10 am
ถ้าเลือกค่าในคอลัมน์ D ในหน้าที่ 1 ไม่ซ้ำกัน ค่าจะไปปรากฎในหน้าที่ 2 พร้อมทั้งชื่อการทดลองในคอลัมน์ B
แต่ถ้าในหน้าที่ 1 เลือกค่าในคอลัมน์ D ซ้ำกัน ค่าก็จะไปปรากฎในหน้าที่ 2 แต่ชื่อการทดลองในคอลัมน์ B จะซ้ำไปด้วย
ควรแก้ไขสูตรอย่างไรดีครับ (เดิมใช้ VLOOKUP) ให้สามารถเลือกค่าในคอลัมน์ D ซ้ำกันได้ แต่ชื่อการทดลองในคอลัมน์ B ไม่ซ้ำตาม
ขอบคุณครับอาจารย์
You do not have the required permissions to view the files attached to this post.
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#2
Post
by DhitiBank » Fri Apr 03, 2015 11:05 am
ที่ B7 ลองคีย์แบบนี้ครับ
=IF(M7="","",INDEX('หน้า 1'!$B$7:$B$15,SMALL(IF('หน้า 1'!$D$7:$D$15=D7,ROW('หน้า 1'!$D$7:$D$15)-ROW('หน้า 1'!$D$7)+1),COUNTIF($D$7:D7,D7))))
Ctrl+Shift+Enter
จากนั้นคัดลอกลงไปยังเซลล์ที่เกี่ยวข้องครับ
แล้วก็แนะนำสูตรตรงคอลัมน์ D ที่เอาไว้เรียงลำดับค่าที่เลือกจากน้อยไปมากนะครับ เผื่อเป็นทางเลือกในการทำความเข้าใจ
D7 คีย์
=IFERROR(SMALL(IF('หน้า 1'!$D$7:$D$15<>"",'หน้า 1'!$D$7:$D$15),INT(ROWS($D$7:D7)/2)+1),"")
Ctrl+Shift+Enter
แล้วคัดลอกลงไปยังเซลล์ที่เกี่ยวข้องครับ
ปล. ในความคิดส่วนตัวผมนะครับ การใช้ MMULT เหมาะที่จะใช้ในกรณีที่ช่วงอ้างอิงมีหลายแถวหลายคอลัมน์และคำตอบที่เราต้องการก็กระจายตัวอยู่ในนั้น ไม่แน่นอนว่าคอลัมน์ไหนแถวไหน ก็จะใช้การคำนวณเชิงเมทริกซ์นี้ดึงคำตอบออกมาได้สะดวก แต่หากเป็นการเรียงลำดับตัวเลขจากน้อยไปมาก หรือจากมากไปน้อยเพียงคอลัมน์เดียวหรือแถวเดียวแบบนี้ก็อาจใช้สูตรที่ง่ายลงมาหน่อยก็ได้ครับ
leelaphoom
Member
Posts: 21 Joined: Mon Mar 03, 2014 11:15 pm
#3
Post
by leelaphoom » Fri Apr 03, 2015 12:46 pm
ขอบคุณมากๆ เลยครับ ใช้งานได้แล้ว แต่ผมขอถามอีกเรื่องนะครับ
ถ้าต้องการให้คอลัมน์ F ในหน้า 2 แปรผันตาม คอลัมน์ D ในหน้า 2 ต้องใช้สูตรอะไรครับ
ผมจะแนบตัวอย่างให้ดูนะครับ มีรูปภาพด้านในไฟล์ครับ
You do not have the required permissions to view the files attached to this post.
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#4
Post
by DhitiBank » Fri Apr 03, 2015 1:04 pm
ที่ F7 คีย์
=IF(B7="","",--(INDEX('หน้า 1'!$F$7:$F$15,MATCH(B7,'หน้า 1'!$B$7:$B$15,0))&":"&INDEX('หน้า 1'!$H$7:$H$15,MATCH(B7,'หน้า 1'!$B$7:$B$15,0))))
Enter
แล้วคัดลอกลงด้านล่างครับ