Page 1 of 1

หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง Rec

Posted: Wed Jul 04, 2012 3:29 pm
by nate_eyesky
ตามไฟล์แนบค่ะ
คือจะเอาไว้ค้นหาเอกสาร ปัจจุบันใช้ Vlookup เครื่องจะแสดงค่าที่เจอค่าแรก
แต่การใช้งานจริงรหัสชิ้นงานที่ใช้ในการ Vlookup มีข้อมูลอยู่หลาย Record ค่ะ ดังนั้นค่าที่ Vlookup
แสดงมาจึงไม่ค่อยตรงตามที่ต้องการเท่าไหร่ ไม่ทราบว่ามีสูตร หรือว่า function ไหนที่เช็คข้อมูลให้ตรงกัน
ก่อนค่อยแสดงค่าบางค่ะ

ขอบคุณค่ะ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Wed Jul 04, 2012 4:35 pm
by bank9597
:D ไม่เห็นไฟล์แนบครับ ลองแนบมาให้ใหม่อีกครั้งครับ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 4:20 pm
by nate_eyesky
ข้อโทษทีค่ะ
ลองแนบไฟล์ใหม่

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 5:31 pm
by joo
:D ลองแบบนี้ดูไหมครับที่ C11 คีย์ =INDEX(HTJOB!L$2:L$3500,MATCH($C$1,HTJOB!$B$2:$B$3500,1)) Enter แล้ว Copy ไปจนถึง E11
ที่ F11 คีย์ =INDEX(HTJOB!J$2:J$3500,MATCH($C$1,HTJOB!$B$2:$B$3500,1))
ที่ G11 คีย์ =INDEX(HTJOB!K$2:K$3500,MATCH($C$1,HTJOB!$B$2:$B$3500,1))

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 9:25 pm
by bank9597
:D แนะนำให้ตรวจสอบโจทย์ก่อนตั้งคำถามครับ

ในไฟล์ให้ดึงข้อมูลที่ตรงกับเงื่อนไขดังต่อไปนี้ คือ หมายเลขชิ้นงาน,เครื่อง,หมายเลขเครื่อง แต่ความเป็นจริงแล้ว มันควรจะเป็น รหัสชิ้นงาน,เครื่อง,หมายเลขเครื่อง
เมื่อมีการระบุผิดพลาดเช่นนี้ ทำให้ผู้ตอบไม่สามารถทราบได้เลยว่าตกลงเงื่อนไขใดกันแน่ อีกทั้งข้อมูลก็มีจำนวนมาก ดังนั้นต้องตรวจโจทย์ให้ถูกก่อนทุกครั้งครับ

การหาค่าที่ตรงกันทั้ง 3 เงื่อนไข ลองตามนี้ครับ

ยกเลิกการผสานเซลล์ ตั้งแต่เซลล์ C11:G11 แล้วที่ C11 คีย์ =INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF(LOOKUP(CHAR(255),$C$1)='HT JOB'!$B$2:$B$5000,IF(LOOKUP(CHAR(255),$E$1)='HT JOB'!$C$2:$C$5000,IF(LOOKUP(9.99999999999999E+307,$F$1)=('HT JOB'!$D$2:$D$5000)*1,1))),0))
กด Ctrl+Shift ค้าง ตามด้วยปุ่ม Enter คัดลอกไปทางขวามือ
ต้องการให้แสดงค่าในคอลัมน์ไหนของชีท HT JOB ก็ให้เปลี่ยนคอลัมน์ในสูตรสีแดงด้านบนครับ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 9:39 pm
by snasui
:lol: Lookup(Char(255),...) และ Lookup(9.99999999999999e307,...) จะใช้กับช่วงข้อมูล ไม่ควรนำมาใช้กับเซลล์เดี่ยวเพราะจะเยิ่นเย้อเกินความจำเป็นครับ

เช่นจากสูตร

=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF(LOOKUP(CHAR(255),$C$1)='HT JOB'!$B$2:$B$5000,IF(LOOKUP(CHAR(255),$E$1)='HT JOB'!$C$2:$C$5000,IF(LOOKUP(9.99999999999999E+307,$F$1)=('HT JOB'!$D$2:$D$5000)*1,1))),0))

ควรปรับเป็น

=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF($F$1='HT JOB'!$D$2:$D$5000+0,1))),0))

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 10:05 pm
by bank9597
snasui wrote::lol: Lookup(Char(255),...) และ Lookup(9.99999999999999e307,...) จะใช้กับช่วงข้อมูลไม่ควรนำมาใช้กับเซลล์เดี่ยวเพราะจะเยิ่นเย้อเกินความจำเป็นครับ

เช่นจากสูตร

=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF(LOOKUP(CHAR(255),$C$1)='HT JOB'!$B$2:$B$5000,IF(LOOKUP(CHAR(255),$E$1)='HT JOB'!$C$2:$C$5000,IF(LOOKUP(9.99999999999999E+307,$F$1)=('HT JOB'!$D$2:$D$5000)*1,1))),0))

ควรปรับเป็น

=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF($F$1='HT JOB'!$D$2:$D$5000+0,1))),0))
จริงด้วยครับอาจารย์ ผมใส่สูตรแบบของอาจารย์ก่อนแล้ว มันไม่ยอมให้ผ่าน เข้าใจว่าที่ C1 มีการผสานเซลล์ แล้วส่งผลให้คีย์แบบอาร์ไม่ผ่าน ผมเลยต้องเปลี่ยนมาใช้ Lookup ดังที่เห็นครับ จริงๆแล้วปัญหาอยู่ที่ C11:G11 ช่วงเซลล์นี้ผู้ถามจะผสานเซลล์ไว้ (ตามไฟล์แนบ) ทำให้คีย์สูตรอาร์เรย์ไม่ผ่าน
ยังไงต้องขออภัยด้วยครับ ที่ไม่รอบคอบ

รบกวนอาจารย์แนะนำวิธีแก้ไขการใช้สูตรอาร์เรย์บนเซลล์ที่มีการผสานหน่อยครับ ผมไม่รู้ว่าผมเข้าใจผิดหรือไม่อย่างไร รบกวนอธิบายให้ฟังหน่อยได้ไหมครับ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 10:15 pm
by snasui
bank9597 wrote:รบกวนอาจารย์แนะนำวิธีแก้ไขการใช้สูตรอาร์เรย์บนเซลล์ที่มีการผสานหน่อยครับ ผมไม่รู้ว่าผมเข้าใจผิดหรือไม่อย่างไร รบกวนอธิบายให้ฟังหน่อยได้ไหมครับ
:lol: คำแนะนำคือ ยกเลิกการผสานเซลล์ก่อนที่จะคีย์สูตรลงในเซลล์นั้น สูตร Array ไม่สามารถคีย์ลงในเซลล์ที่ผสานกันได้ครับ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Thu Jul 05, 2012 10:46 pm
by bank9597
:lol: :lol: :shock: :shock:

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 12:38 am
by bank9597
joo wrote::D ลองแบบนี้ดูไหมครับที่ C11 คีย์ =INDEX(HTJOB!L$2:L$3500,MATCH($C$1,HTJOB!$B$2:$B$3500,1)) Enter แล้ว Copy ไปจนถึง E11
ที่ F11 คีย์ =INDEX(HTJOB!J$2:J$3500,MATCH($C$1,HTJOB!$B$2:$B$3500,1))
ที่ G11 คีย์ =INDEX(HTJOB!K$2:K$3500,MATCH($C$1,HTJOB!$B$2:$B$3500,1))
:mrgreen: ขอบคุณคุณ Joo สำหรับความช่วยเหลือที่มีต่อเพื่อนสมาชิกด้วยครับ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 8:18 am
by joo
bank9597 wrote::D แนะนำให้ตรวจสอบโจทย์ก่อนตั้งคำถามครับ

ในไฟล์ให้ดึงข้อมูลที่ตรงกับเงื่อนไขดังต่อไปนี้ คือ หมายเลขชิ้นงาน,เครื่อง,หมายเลขเครื่อง แต่ความเป็นจริงแล้ว มันควรจะเป็น รหัสชิ้นงาน,เครื่อง,หมายเลขเครื่อง
เมื่อมีการระบุผิดพลาดเช่นนี้ ทำให้ผู้ตอบไม่สามารถทราบได้เลยว่าตกลงเงื่อนไขใดกันแน่ อีกทั้งข้อมูลก็มีจำนวนมาก ดังนั้นต้องตรวจโจทย์ให้ถูกก่อนทุกครั้ง
:tt: ต้องขออภัยด้วยครับที่ตอบได้ไม่ตรงคำถาม ตอนแรกเข้าใจว่าต้องการหาให้ตรงกับเงื่อนไขใดเงื่อนไขหนึ่งเท่านั้น :lol:

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 9:00 am
by nate_eyesky
ขอบคุณมากมายสำหรับทุกคำตอบและคำแนะนำค่ะ
เป็นประโยชน์มากเลย :P

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 9:40 am
by nate_eyesky
ยังติดปัญหาบางประการค่ะ ตรงช่องหมายเลขเครื่อง บาง Record มี , (comma) นะค่ะ ขึ้น error #N/A ค่ะ ลองเปลี่ยนเป็น - (ขีดกลาง) ก็ยังไม่ได้ รบกวนอาจารย์และท่านผู้รู้ทั้งหลายช่วยหน่อยค่ะ
และถ้าคีย์ข้อมูลเฉพาะที่ช่อง หมายเลขชิ้นงาน โดยที่ช่อง เครื่องกับหมายเลขเครื่อง ไม่มีการคีย์ข้อมูลใด ๆ แต่ยังให้แสดง Record ที่เช็คได้จากช่อง หมายเลขชิ้นงาน ค่ะ เพราะว่าบางทีที่ต้องการเอกสาร ก็ได้แค่หมายเลขชิ้นงานมา แล้วไม่บอกเครื่องกับหมายเลขเครื่องที่ต้องการก็มีค่ะ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 11:12 am
by bank9597
:D ลองดูตามนี้ครับ
ที่เซลล์ C11 คีย์ =INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF(IFERROR($F$1='HT JOB'!$D$2:$D$5000+0,$F$1='HT JOB'!$D$2:$D$5000),1))),0))

กด Ctrl+Shift+Enter คัดลอกไปทางขวาครับ

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 6:43 pm
by snasui
bank9597 wrote:=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF(IFERROR($F$1='HT JOB'!$D$2:$D$5000+0,$F$1='HT JOB'!$D$2:$D$5000),1))),0))
สามารถปรับเป็นด้านล่างครับ

=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF(TEXT($F$1,"@")='HT JOB'!$D$2:$D$5000,1))),0))

Ctrl+Shift+Enter

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 7:52 pm
by bank9597
snasui wrote:
bank9597 wrote:=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF(IFERROR($F$1='HT JOB'!$D$2:$D$5000+0,$F$1='HT JOB'!$D$2:$D$5000),1))),0))
สามารถปรับเป็นด้านล่างครับ

=INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF(TEXT($F$1,"@")='HT JOB'!$D$2:$D$5000,1))),0))

Ctrl+Shift+Enter
:( อาจารย์ตอบได้สุดยอดอีกแล้ว เมื่อจะตอบได้ดีแบบนี้บ้าง :(

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Fri Jul 06, 2012 8:58 pm
by bank9597
ถ้าคีย์ข้อมูลเฉพาะที่ช่อง หมายเลขชิ้นงาน โดยที่ช่อง เครื่องกับหมายเลขเครื่อง ไม่มีการคีย์ข้อมูลใด ๆ แต่ยังให้แสดง Record ที่เช็คได้จากช่อง หมายเลขชิ้นงาน ค่ะ เพราะว่าบางทีที่ต้องการเอกสาร ก็ได้แค่หมายเลขชิ้นงานมา แล้วไม่บอกเครื่องกับหมายเลขเครื่องที่ต้องการก็มีค่ะ
:D แก้ปัญหาเฉพาะหน้าด้วยสูตรนี้ก่อนครับ
ที่เซลล์ C11 คีย์ =IFERROR(INDEX('HT JOB'!L$2:L$5000,MATCH(1,IF($C$1='HT JOB'!$B$2:$B$5000,IF($E$1='HT JOB'!$C$2:$C$5000,IF(TEXT($F$1,"@")='HT JOB'!$D$2:$D$5000,1))),0)),(INDEX('HT JOB'!L$2:L$5000,MATCH($C$1,'HT JOB'!$B$2:$B$5000,0))))

Ctrl+Shift+Enter คัดลอกไปทางขวา

Re: หาเอกสารที่มีหลาย Record แต่ต้องการให้ข้อมูลแสดงเพียงบาง

Posted: Mon Jul 09, 2012 11:48 am
by nate_eyesky
ขอบคุณมากๆ เลยค่ะสำหรับคำแนะนำดีๆ