snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
kchn_deaw
Member
Posts: 30 Joined: Wed May 21, 2014 11:49 pm
#1
Post
by kchn_deaw » Thu Sep 11, 2014 12:05 am
ก่อนอื่นต้องขออภัย หัวข้อกระทู้มันจำกัด พยายามเขียนให้สื่อแล้ว แต่ว่าได้เท่านี้ค่ะ ที่จริงอยากเขียนว่า
"สอบถามการส่งกลับข้อมูลที่ตรงตามเงื่อนไข+ปรับขนาดListbox+ขอคำแนะนำการใช้สูตร"
เริ่มเลยนะคะ
ข้อที่ 1) ต้องการทราบวิธีหาค่าชุดข้อมูล จากไฟล์ตัวอย่าง ดังนี้
เมื่อพิจารณาจาก D8 ใน Sheet "Pallet" แล้วหาข้อมูลจาก sheet "DATA" คอลัมน์ "B3:B1062" ทั้งหมดที่ตรงกับ D8 แล้วจึงนำค่าใน "D3:D1062"มาแสดงตามลำดับ
เช่น sheet "Pallet" D8=0029
และที่ sheet"DATA" เมือ่พิจารณา B3:B1062 แล้ว พบว่ามี ค่า 0029 อยู่ 25 record จากนั้นจึงนำผลลัพธ์ที่ พบจากคอลัมภ์ D มาแสดงที่ L9,L10,L11...L38 (ถ้ามีจำนวนถึง 38 ถ้ามีไม่ถึงก็ว่างไว้) ตามลำดับ ดังนี้
1 4140902199712
2 4140902199713
3 4140902199714
4 4140902199715
5 4140902199716
6 4140902199718
7 4140902199719
8 4140902199720
9 4140902199721
10 4140902199722
11 4140902199723
12 4140902199724
13 4140902199725
14 4140902199726
15 4140902199746
16 4140902199747
17 4140902199752
18 4140902199753
19 4140902199755
20 4140902199763
21 4140902199764
22 4140902199769
23 4140902199770
24 4140902199771
25 4140902199776
ข้อที่ 2) หากว่าในอนาคต มีการเพิ่มเขตข้อมูล เช่น B3:B1062 อาจจะเป็น B3:B3000 มีการดักสูตรไว้ได้อย่างไรบ้างเพื่อให้ User ไม่ต้องเข้ามาแก้ไขสูตร (คลับคล้ายคลับคลา ว่า จะใช้เทคนิคสูตร อาเรย์ แต่หากระทู้เดิมที่เคยเรียนรู้มาไม่เจอแล้วค่ะ)
ข้อที่ 3.)มีวิธีทำให้ List Box มีตัวเลือกใหญ่กว่านี้ และ Scroll bar อ้วนกว่านี้ได้มั๊ยคะ
ข้อที่ 4) ข้อมูลส่วนใหญ่ใน Sheet "Pallet" ที่อยู่ในกรอบ เป็นการใช้สูตรดึงข้อมูล อยากสอบถามเพื่อนๆ พี่ๆ คุณครู ว่าหากเป็นท่านเอง ท่านเลือกที่จะใช้สูตรดังกล่าวที่ใช้ในไฟล์ตัวอย่างนี้หรือไม่ ถ้าไม่ ท่านๆ จะเลือกใช้สูตรแบบไหน แชร์ให้ฟังหน่อยได้มั๊ยคะ จะได้ปรับปรุงจุดอ่อนของตนเองได้
ขอบคุณมากค่ะ
You do not have the required permissions to view the files attached to this post.
joo
Gold
Posts: 1213 Joined: Sat Apr 17, 2010 3:50 pm
#2
Post
by joo » Thu Sep 11, 2014 7:55 am
ลองตามนี้ดูครับ ที่ซีท Pallet เซลล์ L8 คีย์
Code: Select all
=IFERROR(INDEX(Data!D$3:D$1062,SMALL(IF(Data!$B$3:$B$1062=$D$8,ROW(Data!$B$3:$B$1062)-ROW(Data!$B$3)+1),ROWS(L$9:L9))),"")
กดแป้น Ctrl+Shift+Enter พร้อมกันแล้วคัดลอกลงล่าง