Page 1 of 2
ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 8:15 pm
by zerius
ผมต้องการดึงข้อมูลตามไฟล์ที่แนบไปครับ ผมทำมาหลายวันแล้วครับ จากการศึกษาในเว็ปอาจารย์แต่ไม่ได้จริงๆครับ
รบกวนด้วยครับ ขอบคุณครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 8:24 pm
by snasui
ช่วยกรอกตัวอย่างคำตอบที่ต้องการมาด้วยครับ และหากอธิบายวิธีการที่จะให้ได้มารายการนั้น ๆ สักรายการก็จะยิ่งทำให้เข้าใจมากขึ้นครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 8:34 pm
by zerius
ครับ มันเหมือนว่าแยกข้อมูลออกจากกันน่ะครับ อาจารย์
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 10:22 pm
by snasui
ลองตามด้านล่างครับ
ที่ชีท FUNCTION
- เซลล์ I1 คีย์ค่าที่ต้องการ List ข้อมูล ตามตัวอย่างคีย์ DF
- เซลล์ J1 คีย์สูตรเพื่อนับว่ามีค่า DF จำนวนกี่บรรทัด
=COUNTIF(DATA!E2:E51,I1)
Enter
- ที่เซลล์ I3 คีย์สูตรเพื่อ List ลำดับรายการที่พบ
=IF(ROWS(I$4:I4)>$J$1,"",SMALL(IF(DATA!$E$2:$E$51=$I$1,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(I$3:I3)))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
- ที่เซลล์ B3 คีย์สูตรเพื่อให้ลำดับรายการ
=IF($I3<>"",ROWS(B$3:B3),"")
Enter > Copy ลงด้านล่าง
- ที่ C3 คีย์สูตรเพื่อดึงค่า Part No. มาแสดง
=INDEX(DATA!$B$2:$I$51,$I3,MATCH(C$2,DATA!$B$1:$I$1,0))
Enter > Copy ลงด้านล่าง และ Copy ไปยังคอลัมน์อืน ๆ เพื่อแสดงค่าตามต้องการ
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 10:39 pm
by zerius
ขอบคุณอาจารย์มากครับผม เดี๋ยวผมขอลองศึกษาดูก่อนนะครับ เพราะจริงๆแล้วผมอยากได้คำตอบให้เรียงจากตารางด้านซ้ายไล่เรียงมาจนถึง ช่อง Volume เป็นอันสุดท้ายครับ
แต่เดี๋ยวผมต้องลองดูเองบ้างครับ เล่นให้แต่ช่วยคงไม่ก้าวไปข้างหน้าสักทีครับ
ขอบคุณมากครับ ถ้ามีปัญหาอีกผมจะมารบกวนใหม่นะครับ ขอบคุณครับผม
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 10:58 pm
by zerius
พบปัญหาแล้วครับอาจารย์ ถ้าชุดข้อมูลไม่เรียงค่าล่ะครับ คือมันเรียงไม่ได้น่ะครับ ต้องอ้างอิงตำแหน่งของ Cus. Part No. กับ Part No. จะต้องทำอย่างไรครับ ผมลองส่งไฟล์แนบมาให้ดูแล้วครับ
ขอบพระคุณมากครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 11:10 pm
by snasui
ไม่เข้าใจครับ สูตรที่ผมให้ไปนั้น
ไม่จำเป็นต้องเรียงชุดข้อมูลครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 11:47 pm
by zerius
คือผมลองเปลี่ยนค่าใน sheet DATA ช่อง Volume ครับ ให้มันไม่เรียง แล้วมันดึงข้อมูลไม่ได้ครับ จากฟังก์ชั่นที่อาจารย์ให้มาน่ะครับ เดี๋ยวผมจะลองดูอีกทีนะครับ วันนี้นอนก่อนเดี๋ยวตื่นไม่ทัน
ขอบคุณอย่างยิ่งครับอาจารย์ ถ้าไม่ได้เดี๋ยวผมจะรบกวนใหม่ครับ ขอบพระคุณครับผม
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 11:51 pm
by snasui
ไม่เห็นตัวอย่างจากไฟล์ที่แนบมาล่าสุดครับ ขอย้ำว่า ต้นแหล่งไม่จำเป็นต้องเรียงครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Thu Jan 19, 2012 11:57 pm
by snasui
ถ้าหมายถึงว่าให้ดึง Volume มาด้วยก็ตามไฟล์แนบครับ เนื่องจาก Volume เดิมนั้นไม่ใช่ Volume จากชีท Function เพียงแต่ใช้เป็นตัวระบุบรรทัดในการดึงข้อมูลเท่านั้น สำหรับไฟล์แนบผมได้แยกออกมาต่างหากแล้ว
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 11:15 am
by zerius
อาจารย์ครับ จากฟังก์ชั่น index + match มีโอกาสเป็นไปได้ไหมครับ ที่จะเกิดการดึงผิด เช่น ผมต้องการดึงข้อมูลจาก sheet DATA ใน Column Part No. แต่ได้ข้อมูลใน Column Cus. Part No. มาแทน คือมันเลื่อนไปทางขวาครับ ผมพยายามแก้แล้ว แต่ก็แก้ไม่ได้สักที
ตอนนี้ผมใส่ไฟล์แนบไปไม่ได้ครับผม เพราะไฟล์ถูกเข้ารหัสไว้จึงไม่สามารถแนบไฟล์เพื่อให้ง่ายต่อการสื่อสารได้ครับ ถ้าอาจารย์ไม่เข้าใจที่ผมอธิบายผมจะกลับไปแล้วกรอกข้อมูลใหม่ครับ แล้วจะสอบถามอีกทีครับ ขอบพระคุณมากครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 11:24 am
by snasui
ถ้าเขียนสูตรผิดมันก็ดึงผิดเป็นเรื่องปกติครับ ถ้าสูตรถูกโอกาสผิดแทบจะไม่มีครับ
ไฟล์ถูกเข้ารหัสไม่ใช่ปัญหาครับ การส่งไฟล์มาถามตอบให้
ทำตัวอย่างขึ้นมาใหม่โดยต้องเป็นตัวแทนของข้อมูลจริง ไม่ใช่ส่งมาครบทุกข้อมูลครับ และอย่าส่งไฟล์ต้นฉบับมาครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 6:47 pm
by zerius
ตอนนี้ผมทำได้แล้วครับ ขอบพระคุณอาจารย์มากครับผม แต่ผมอยากจะขอรบกวนเวลาสักนิด เรื่องฟังก์ชั่นที่อาจารย์ให้มาที่ผมไม่เข้าใจ อันนี้เลยครับ
=IF(ROWS(J$5:J5)>$D$2,"",SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4)))
รบกวนด้วยนะครับ
ขอบพระคุณครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 7:01 pm
by snasui
สูตรนี้เป็นสูตรที่ซับซ้อนเนื่องจากเป็นสูตร Array ครับ ผมจะอธิบายสูตรหลัก ๆ ตามด้านล่างครับ
จากสูตร =IF(ROWS(J$5:J5)>$D$2,"",SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4)))
ความหมายคือ
- ถ้า ROWS(J$5:J5)>$D$2 เป็นจริงแล้วให้แสดงค่า "" ซึ่งก็คือค่าว่าง
- ถ้า ROWS(J$5:J5)>$D$2 ไม่เป็นจริงให้แสดงผลลัพธ์ของสูตร SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4))
จากสูตร SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4))
ความหมายคือ
- ให้หาค่าที่้น้อยที่สุดเป็นลำดับที่ได้จากค่าของ ROWS(J$4:J4)
- จากช่วงข้อมูลที่ได้จากผลลัพธ์ของ IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1)
จากสูตร IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1)
ความหมายคือ
- ถ้า DATA!$E$2:$E$51=$C$2 เป็นจริงให้แสดงค่าลำดับโดยเริ่มจาก 1 เสมอ ซึ่งจะได้จากผลลัพธ์ของ ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1 และค่าสุดท้ายจะเป็นเท่าใดก็แล้วแต่ช่วงข้อมูลนั้นครอบคลุมปริมาณข้อมูลจำนวนกี่บรรทัด
- ถ้าไม่เป็นจริงก็แสดงค่า False ซึ่งไม่ได้ระบุไว้ในสูตร แต่สูตรจะให้ผลลัพธ์เป็นค่า False อัตโนมัติ
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 7:24 pm
by zerius
ขอบพระคุณอาจารย์มากครับ ว่าแล้วก็ศึกษาต่อก่อนครับ ถ้ามีอะไรสงสัยผมจะมารบกวนใหม่นะครับ
ขอบพระคุณอย่างยิ่งครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 8:42 pm
by zerius
อาจารย์ครับ
$D$4
D$4
$D4
ต่างกันยังไงหรอครับ ขอโทษล่วงหน้าครับ ถ้าผมถามอะไรที่มันโง่ไปหน่อยครับ ผมพยายามหาคำตอบใน google แล้วครับ แต่ไม่ได้คำตอบที่ต้องการเลยครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 9:10 pm
by snasui
ถามได้ทุกเรื่องที่เกี่ยวกับ Excel ครับ จะยากหรือง่ายก็ไม่ต้องกังวลครับ
สำหรับ $ ใน Excel ที่ใช้กับสูตรต่าง ๆ นั้นมีความหมายว่าให้
ตรึงหรือ Lock ไว้ครับ ยกตัวอย่างตามที่ถามมา
- $D$4 เป็นการ Lock คอลัมน์ D และบรรทัดที่ 4 หรือก็คือ D4 สูตรที่อ้างถึงค่านี้จะนำค่าในเซลล์ D4 ไปใช้ตลอดกาล ไม่เปลี่ยนเป็นเซลล์อื่น
- D$4 เป็นการ Lock เฉพาะบรรทัดที่ 4 สูตรที่อ้างอิงถึงค่านี้จะนำบรรทัดที่ 4 ไปใช้ตลอดกาล แต่คอลัมน์นั้นสามารถที่จะเปลี่ยนแปลงไปตามตำแหน่งที่นำสูตรไปวาง
- $D4 เป็นการ Lock เฉาพะคอลัมน์ D สูตรที่อ้างอิงถึงค่านี้จะนำคอลัมน์ D ไปใช้ตลอดกาลแต่บรรทัดสามารถเปลี่ยนแปลงไปตามตำแหน่งที่นำสูตรไปวาง
- D4 ไม่มีการ Lock ตำแหน่ง สูตรที่อ้างอิงถึงค่านี้จะเปลี่ยนแปลงไปได้ทั้งคอลัมน์และทั้งบรรทัด
ลำพังเพียงการอธิบายจะไม่เห็นภาพจริง ต้องลงมือเขียนลงใน Excel แล้วทดสอบโดยลองตามนี้ครับ
- คลุมเซลล์ D4:F6
- คีย์สูตร = Rand() จากนั้นกดแป้น Ctrl ค้างไว้แล้วกดแป้น Enter ตามมา จะเป็นการสุ่มค่าตัวเลขและแสดงผลอยู่ในเซลล์ D4:F6
- ที่เซลล์ใด ๆ คีย์สูตร =$D$4 (ตามข้อ 1 ด้านบน) แล้ว Copy ไปทางซ้าย, ขวา, บนและล่าง จากนั้นสังเกตดูผลลัพธ์
- เปลี่ยนการคีย์ให้อ้างอิงตามข้อ 2-4 ตามด้านบนแล้ว Copy ไปทางซ้าย, ขวา, บนและล่าง จากนั้นสังเกตดูผลลัพธ์
Re: ดึงข้อมูลยังไงครับ
Posted: Fri Jan 20, 2012 9:36 pm
by zerius
ขอบพระคุณมากครับอาจารย์
Re: ดึงข้อมูลยังไงครับ
Posted: Mon Jan 30, 2012 7:15 pm
by zerius
อาจารย์กลับมาแล้ว ดีใจมากเลยครับ ผมมีเรื่องจะรบกวนอีกแล้วครับ ตามไฟล์แนบเลยครับ
ขอบพระคุณมากเลยครับ
Re: ดึงข้อมูลยังไงครับ
Posted: Mon Jan 30, 2012 7:45 pm
by snasui
ลองตามไฟล์แนบครับ
- เซลล์ D2 คีย์สูตรเพื่อนับจำนวนที่พบ
=SUMPRODUCT(--(B2=DATA!B4:B63),--(DATA!E4:E63="ASSY"))
Enter
- เซลล์ A4 คีย์สูตรเพื่อหาลำดับที่พบข้อมูล
=IF(ROWS(A$4:A4)>$D$2,"",SMALL(IF($B$2=DATA!$B$4:$B$63,IF(DATA!$E$4:$E$63="ASSY",ROW(DATA!$B$4:$B$63)-ROW(DATA!$B$4)+1)),ROWS(A$4:A4)))
Ctrl+Shift+Enter > Copy ลงด้านล่าง
- เซลล์ B4 คีย์สูตรเพื่อนำข้อมูลมาแสดง
=INDEX(DATA!C$4:C$63,$A4)
Enter > Copy ไปทางขวาและลงด้านล่าง