Page 1 of 1

ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 10:01 am
by sitrapong
ดึงข้อมูลมาไม่หมดครับ ช่วยทีครับ ขอขอบคุณล่วงหน้า

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 11:00 am
by nattasiray
ตรวจสอบการอ้างอิงเซลล์ที่อยู่ในฟังก์ชัน SUMIF ของเซลล์ C2 ในเวิร์คชีต Fileรวม แล้วพบว่าไม่ถูกต้อง

เดิมคุณใช้

Code: Select all

=SUMIF(Fileหลัก!C3:E1708,Fileรวม!A2,Fileหลัก!E3:E1708)
ซึ่งไม่ถูกต้อง

ที่ถูกต้องคือ
=SUMIF(Fileหลัก!$C$3:$C$1708,Fileรวม!A2,Fileหลัก!$E$3:$E$1708)

ต้องตรึงเซลล์ในการคำนวณด้วยเครื่องหมาย $ ครับ จากนั้นคัดลอกแล้ววางเฉพาะสูตร ไปที่เซลล์ C2:C1461

ที่เซลล์ D2 ในเวิร์คชีต Fileรวม คุณใช้สูตร =SUMIF(FileA!$B$3:$B$3000,A2,FileA!$D$3:$D$3000)

แต่เมื่อกลับไปดูที่เวิร์คชีต FilesA มีข้อมูลที่ D3:D245 เท่านั้น แล้วคุณเอา D3000 มาจากไหนครับ :o

ดังนั้นแก้สูตรโดยเลือกเซลล์ D2:D1461 ที่อยู่ในเวิร์คชีต Filesรวม แล้วเปลี่ยนเป็น =SUMIF(FileA!$B$3:$B$245,A2,FileA!$D$3:$D$245) ตามด้วยการกดแป้น Ctrl+Enter


ที่เซลล์ E2 ในเวิร์คชีต Fileรวม คุณใช้สูตร =SUMIF(FileA!$B$3:$B$3000,A2,FileA!$D$3:$D$3000)

แต่เมื่อกลับไปดูที่เวิร์คชีต FilesB มีข้อมูลที่ D4:D2000 เท่านั้น แล้วคุณเอา D3000 มาจากไหนครับ :o

ดังนั้นแก้สูตรโดยเลือกเซลล์ E2:E1461 ที่อยู่ในเวิร์คชีต Fileรวม แล้วเปลี่ยนเป็น =SUMIF(FileB!$B$3:$B$245,A2,FileB!$D$3:$D$245) ตามด้วยการกดแป้น Ctrl+Enter

เสริมนะครับ

1. ในการบันทึกข้อมูลที่อยู่ในรูปฐานข้อมูลต้องไม่มีการคำนวณอยู่ในตารางครับ มิฉะนั้นผลลัพธ์ที่ได้จะมีความผิดเพี้ยนไปมาก
2. ควรตั้งชื่อเล่นกลุ่มเซลล์ (Range Name) ให้กับกลุ่มเซลล์แหล่งข้อมูล เพื่อนำมาใช้ร่วมสร้างการคำนวณ แทนการอ้างอิงแบบอย่างง่าย

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

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 11:29 am
by sitrapong
ขอขอบคุณมากสำหรับข้อมูลครับ ในส่วนที่ผมกำหนดไว้3000ผมกำหนดไว้เผื่อเฉยๆครับเลยไม่รู้ว่ามันมีผลกับข้อมูล ต้องขอขอบคุณสำหรับข้อมูลอีกครั้งนะครับ

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 11:37 am
by sitrapong
ผมลองtestสูตรที่คุณบอกแล้วครับก็ยังไม่ตรง ครับ

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 12:18 pm
by nattasiray
เงื่อนไขในการดึงข้อมูลนั้น คืออะไรครับ ช่วยแจ้งกลับมาด้วย

ตรวจสอบการบันทึกข้อมูลว่า บันทึกตรงรูปลักษณ์ หรือไม่ เช่น Hard disk กับ Harddisk ถ้าใช้สูตร SUMIF COUNTIF เช่น =SUMIF(CheckRange,"Hard disk",SumRange) แล้วในกลุ่มเซลล์ที่ต้องการตรวจสอบมีคำว่า Harddisk มาปะปนด้วย จะไม่นำมารวมให้ ซึ่งรวมถึง COUNTIF COUNTIFS SUMIF SUMIFS ด้วยครับ

การป้องกันการกรอกข้อมูลที่มีลักษณะเป็นรายการไม่ให้ผิดแผกจากที่มี ต้องใช้ Data Validation List ควบคุมครับ

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 12:39 pm
by sitrapong
ครับ ข้อมูลที่ต้องการคือเป็นตัวเลข มันจะมีตัวเลขทั่งหมดที่มีอยู่(คือฐานข้อมูล) และตัวที่จะเอามาเทียบคือตัวย่อย แต่ตัวย่อยพวกนี้อาจมีมากกว่า1จุดก็เลยอยากให้ตัวเลขที่มีมากกว่า1จุดsumรวมกัน แต่อยากได้ค่าที่สรุปจากตัวมันเองให้ตรงกันตามFileแนบไปก็เท่านั้นครับ
ส่วนสาเหตุของปัญหาผมหาเจอและคือ ตัวฐานข้อมูลมีตัวเลขไม่เพียงพอกับตัวเทียบ เลยทำให้ยอดที่ได้ไม่ตรงกับตัวที่sumมา
สรุปนะครับคือ ข้อมูลที่ต้องการหา มากกว่า ตัวที่มีอยู่ในฐานข้อมูลครับ เลยทำให้ยอดหายและไม่ตรง
ต้องขอขอบคุณอีกครั้งครับที่แนะนำ(ตั้งแต่เข้าเวปนี้มาไอ้ที่ไม่ค่อยรู้ก็รู้เยอะขึ้น ส่วนไอ้ที่ไม่รู้เลยก็พอได้รู้)
บางครั้งเห็น เพื่อนๆพี่ๆในกระทู้ถามสาเหตุที่ทำไม่ได้ พอเราเห็นหรือได้อ่านก็อยากลองศึกษาดูบ้าง บางครั้งก็สมมุติ มาถามบ้างลองดูเองบ้างก็ดีนะครับ

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Sat Oct 12, 2013 2:24 pm
by bank9597
sitrapong wrote:ครับ ข้อมูลที่ต้องการคือเป็นตัวเลข มันจะมีตัวเลขทั่งหมดที่มีอยู่(คือฐานข้อมูล) และตัวที่จะเอามาเทียบคือตัวย่อย แต่ตัวย่อยพวกนี้อาจมีมากกว่า1จุดก็เลยอยากให้ตัวเลขที่มีมากกว่า1จุดsumรวมกัน แต่อยากได้ค่าที่สรุปจากตัวมันเองให้ตรงกันตามFileแนบไปก็เท่านั้นครับ
ส่วนสาเหตุของปัญหาผมหาเจอและคือ ตัวฐานข้อมูลมีตัวเลขไม่เพียงพอกับตัวเทียบ เลยทำให้ยอดที่ได้ไม่ตรงกับตัวที่sumมา
สรุปนะครับคือ ข้อมูลที่ต้องการหา มากกว่า ตัวที่มีอยู่ในฐานข้อมูลครับ เลยทำให้ยอดหายและไม่ตรง
ต้องขอขอบคุณอีกครั้งครับที่แนะนำ(ตั้งแต่เข้าเวปนี้มาไอ้ที่ไม่ค่อยรู้ก็รู้เยอะขึ้น ส่วนไอ้ที่ไม่รู้เลยก็พอได้รู้)
บางครั้งเห็น เพื่อนๆพี่ๆในกระทู้ถามสาเหตุที่ทำไม่ได้ พอเราเห็นหรือได้อ่านก็อยากลองศึกษาดูบ้าง บางครั้งก็สมมุติ มาถามบ้างลองดูเองบ้างก็ดีนะครับ
:D ถ้ายังไม่ได้คำตอบที่ต้องการ ลองแสดงโจทย์ที่ชัดเจนมาอีกครั้งครับ เบื้องต้นจากที่ดูไฟล์และอ่านปัญหามา ก็พอจะแนะนำได้ดังนี้

สร้าง Range Name เพื่อกำหนดช่วงข้อมูลที่มีอยู่จริง สามารถสร้างได้ดังนี้

ไปที่ Formula > Name Manager กด New
Range Name ที่ 1. ชื่อ main ใส่สูตร =OFFSET(Fileหลัก!$C$3,0,0,COUNTA(Fileหลัก!$C:$C)-1)
Range Name ที่ 2. ชื่อ main_qty ใส่สูตร =OFFSET(Fileหลัก!$E$3,0,0,COUNTA(Fileหลัก!$C:$C)-1)
Range Name ที่ 3. ชื่อ file_a ใส่สูตร =OFFSET(FileA!$B$3,0,0,COUNTA(FileA!$B:$B)-1)
Range Name ที่ 4. ชื่อ file_a_qty ใส่สูตร =OFFSET(FileA!$D$3,0,0,COUNTA(FileA!$B:$B)-1)
Range Name ที่ 5. ชื่อ file_b ใส่สูตร =OFFSET(FileB!$B$4,0,0,COUNTA(FileB!$B:$B)-2)
Range Name ที่ 6. ชื่อ file_b_qty ใส่สูตร =OFFSET(FileB!$D$4,0,0,COUNTA(FileB!$B:$B)-2)

ที่ชีท Fileรวม ใช้สูตรเดิม แต่เปลี่ยนช่วงข้อมูลเป็น RangeName

ที่ C2 คีย์ =SUMIF(main,$A2,main_qty) ดับเบิ้ลคลิ๊กที่มุมขวาล่างเซลล์ หรือจะคัดลอกลงมาก็ได้
ที่ D2 คีย์ =SUMIF(file_a,$A2,file_a_qty) ดับเบิ้ลคลิ๊กที่มุมขวาล่างเซลล์ หรือจะคัดลอกลงมาก็ได้
ที่ E2 คีย์ =SUMIF(file_b,$A2,file_b_qty) ดับเบิ้ลคลิ๊กที่มุมขวาล่างเซลล์ หรือจะคัดลอกลงมาก็ได้


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

ที่ชีท Fileรวม
เซลล์ C2 คีย์ =SUM(IF(IFERROR(IF(main+0>=0,main+0),main)=IFERROR(IF(A2+0>=0,A2+0),A2),main_qty)) กด ctrl+shift+enter คัดลอกลงมา
เซลล์ D2 คีย์ =SUM(IF(IFERROR(IF(file_a+0>=0,file_a+0),file_a)=IFERROR(IF(A2+0>=0,A2+0),A2),file_a_qty)) กด ctrl+shift+enter คัดลอกลงมา
เซลล์ E2 คีย์ กด =SUM(IF(IFERROR(IF(file_b+0>=0,file_b+0),file_b)=IFERROR(IF(A2+0>=0,A2+0),A2),file_b_qty)) ctrl+shift+enter คัดลอกลงมา

Re: ดึงข้อมูลมาไม่หมดครับ ช่วยที

Posted: Mon Oct 14, 2013 11:08 pm
by sitrapong
ขอบคุณมากครับbank9597พึ่งจะกลับมาจากที่ทำงาน เดียวจะลองทำทีละสูตรก่อนนอนครับ