Page 1 of 1

การส่งกลับข้อมูลที่ตรงตามเงื่อนไข+ปรับขนาดListbox+แนะนำสูตร

Posted: Thu Sep 11, 2014 12:05 am
by kchn_deaw
ก่อนอื่นต้องขออภัย หัวข้อกระทู้มันจำกัด พยายามเขียนให้สื่อแล้ว แต่ว่าได้เท่านี้ค่ะ ที่จริงอยากเขียนว่า
"สอบถามการส่งกลับข้อมูลที่ตรงตามเงื่อนไข+ปรับขนาด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" ที่อยู่ในกรอบ เป็นการใช้สูตรดึงข้อมูล อยากสอบถามเพื่อนๆ พี่ๆ คุณครู ว่าหากเป็นท่านเอง ท่านเลือกที่จะใช้สูตรดังกล่าวที่ใช้ในไฟล์ตัวอย่างนี้หรือไม่ ถ้าไม่ ท่านๆ จะเลือกใช้สูตรแบบไหน แชร์ให้ฟังหน่อยได้มั๊ยคะ จะได้ปรับปรุงจุดอ่อนของตนเองได้

ขอบคุณมากค่ะ

Re: การส่งกลับข้อมูลที่ตรงตามเงื่อนไข+ปรับขนาดListbox+แนะนำส

Posted: Thu Sep 11, 2014 7:55 am
by joo
:D ลองตามนี้ดูครับ ที่ซีท 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 พร้อมกันแล้วคัดลอกลงล่าง