Page 1 of 1

ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 11:40 am
by natthaporn
ดิฉันต้องการดึงข้อมูลจาก sheet data1 และ data2 มาไว้ที่ sheet check โดยมีเงื่อนไขดังนี้คะ
1. ถ้าข้อมูลที่ sheet data1 cell A6:A9999 ตรงกับข้อมูลที่ sheet check cell B2
2. ถ้าข้อมูลที่ sheet data1 cell B6:B9999 ตรงกับข้อมูลที่ sheet check cell A7:B500
3. ถ้าข้อมูลที่ sheet data1 cell C5:S5 ตรงกับข้อมูลที่ sheet check cell B4
ให้ดึงข้อมูลที่ sheet data1 cell C6:S9999 มาไว้ที่ sheet check cell B7:B500

1. ถ้าข้อมูลที่ sheet data2 cell A6:A9999 ตรงกับข้อมูลที่ sheet check cell B2
2. ถ้าข้อมูลที่ sheet data2 cell B6:B9999 ตรงกับข้อมูลที่ sheet check cell A7:B500
3. ถ้าข้อมูลที่ sheet data2 cell C5:S5 ตรงกับข้อมูลที่ sheet check cell B4
ให้ดึงข้อมูลที่ sheet data2 cell C6:S9999 มาไว้ที่ sheet check cell C7:C500

ดิฉันทดลองใช้สูตร sum{} ได้ผลลัพธ์ตามที่ต้องการ แต่มีประเด็นตรงที่ว่า เมื่อมีการเปลี่ยนข้อมูลที่ cell B2 และ B4 (sheet check) มี process ในการทำงานช้ามากต้องใช้เวลานานมากกว่าข้อมูลจะ callculate ครบทุกแถว

ดิฉํนจึงขอรบกวนท่านผู้รู้แนะนำสูตรที่่ช่วยลด process ในการทำงานด้วยคะ
ขอบคุณคะ

Re: ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 12:02 pm
by bank9597
:D ลองใช้ SUMPRODUCT ดูครับ

ที่ B7 คีย์ =SUMPRODUCT(--(data1!$A$6:$A$116=$B$2)*(data1!$B$6:$B$116=$A7)*(data1!$C$5:$S$5=$B$4),data1!$C$6:$S$116) คัดลอกลงมา

ที่ C7 คีย์ =SUMPRODUCT(--(data2!$A$6:$A$116=$B$2)*(data2!$B$6:$B$116=$A7)*(data2!$C$5:$S$5=$B$4),data2!$C$6:$S$116) คัดลอกลงมา

Re: ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 12:20 pm
by natthaporn
ดิฉันขอขอบคุณ คุณ bank9597 มากคะ สูตรที่่แนะนำมาให้ผลลัพธ์ตามทึ่ต้องการคะ แต่เมื่อดิฉันนำไปใช้กับ file จริง เมื่อเลือกเงื่อนไขที่ cell B2 และ B4 process ของการทำงานก็ยังช้าอยู่เหมือนเดิมคะ เนื่องจากข้อมูลที่ sheet data1 และ data 2 มีประมาณ 9000 แถวคะ คุณ bank9597 หรือท่านอื่น ๆ ที่เข้ามาดูกระทู้นี้พอจะแนะนำสูตรอื่น ๆที่สามารถลด process ให้เร็วกว่านี้ได้ไหมคะ
ขอบคุณคะ

Re: ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 12:55 pm
by bank9597
:D ลองอีกสูตรครับ เผื่อเร็วขึ้น

ที่ B7 คีย์ =MAX(IF(data1!$A$6:$A$116=$B$2,IF(data1!$B$6:$B$116=$A7,IF(data1!$C$5:$S$5=$B$4,data1!$C$6:$S$116)))) กด Ctrl+Shift+Enter คัดลอกลงมา

ที่ C7 คีย์ =MAX(IF(data2!$A$6:$A$116=$B$2,IF(data2!$B$6:$B$116=$A7,IF(data2!$C$5:$S$5=$B$4,data2!$C$6:$S$116)))) กด Ctrl+Shift+Enter คัดลอกลงมา

หากยังช้าอยู่ เดี๋ยวจะลองคิดวิธีอื่นอีกครั้งครับ

Re: ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 2:18 pm
by natthaporn
ความเร็วของ process ของการ calculate ของทั้ง 2 สูตรนี้ใกล้เคียงกันคะ อันนี้เป็นความรู้สึกของดิฉันนะคะ แต่อย่างไรก็ตามต้องขอขอบคุณ bank9597 มากนะคะ สำหรับคำแนะนำคะ

Re: ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 3:09 pm
by bank9597
natthaporn wrote:ความเร็วของ process ของการ calculate ของทั้ง 2 สูตรนี้ใกล้เคียงกันคะ อันนี้เป็นความรู้สึกของดิฉันนะคะ แต่อย่างไรก็ตามต้องขอขอบคุณ bank9597 มากนะคะ สำหรับคำแนะนำคะ
:D ลองอีกวิธีครับ

ที่ชีท data1 เซลล์ T6 คีย์ =A6&B6 คัดลอกลงมา
ที่ชีท check เซลล์ B7 คีย์ =INDEX(data1!$C$6:$S$116,MATCH($B$2&A7,data1!$T$6:$T$116,0),MATCH($B$4,data1!$C$5:$S$5,0)) คัดลอกลงมา

Re: ดึงข้อมูลข้ามsheet

Posted: Thu Sep 26, 2013 9:04 pm
by natthaporn
สูตรที่คุณ bank9597 แนะนำมาล่าสุดช่วยลด process ในการ calculate มากเลยคะ ดิฉันต้องขอขอบคุณจริง ๆ คะ โดยเฉพาะอย่างยิ่งในความพยายามของคุณ bank9597 ที่พยายามหาสูตรต่าง ๆ มาให้
ดิฉันขอชื่นชมผู้รู้/อาจารย์ทุกท่าน ที่คอยช่วยเหลือ และให้ความรู้แก่ผู้ที่เข้ามาเยี่ยมชม web นี้ด้วยความจริงใจคะ

ขอบคุณคะ