:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

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

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sitrapong
Member
Member
Posts: 17
Joined: Sun Oct 06, 2013 12:37 pm

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

#1

Post by sitrapong »

ดึงข้อมูลมาไม่หมดครับ ช่วยทีครับ ขอขอบคุณล่วงหน้า
You do not have the required permissions to view the files attached to this post.
nattasiray
Bronze
Bronze
Posts: 284
Joined: Thu Feb 11, 2010 8:32 pm
Contact:

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

#2

Post 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 ลองไปหามาอ่านครับ
ณัฐศิระ เยาวสุต
(N. Yauvasuta)
sitrapong
Member
Member
Posts: 17
Joined: Sun Oct 06, 2013 12:37 pm

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

#3

Post by sitrapong »

ขอขอบคุณมากสำหรับข้อมูลครับ ในส่วนที่ผมกำหนดไว้3000ผมกำหนดไว้เผื่อเฉยๆครับเลยไม่รู้ว่ามันมีผลกับข้อมูล ต้องขอขอบคุณสำหรับข้อมูลอีกครั้งนะครับ
sitrapong
Member
Member
Posts: 17
Joined: Sun Oct 06, 2013 12:37 pm

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

#4

Post by sitrapong »

ผมลองtestสูตรที่คุณบอกแล้วครับก็ยังไม่ตรง ครับ
nattasiray
Bronze
Bronze
Posts: 284
Joined: Thu Feb 11, 2010 8:32 pm
Contact:

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

#5

Post by nattasiray »

เงื่อนไขในการดึงข้อมูลนั้น คืออะไรครับ ช่วยแจ้งกลับมาด้วย

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

การป้องกันการกรอกข้อมูลที่มีลักษณะเป็นรายการไม่ให้ผิดแผกจากที่มี ต้องใช้ Data Validation List ควบคุมครับ
ณัฐศิระ เยาวสุต
(N. Yauvasuta)
sitrapong
Member
Member
Posts: 17
Joined: Sun Oct 06, 2013 12:37 pm

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

#6

Post by sitrapong »

ครับ ข้อมูลที่ต้องการคือเป็นตัวเลข มันจะมีตัวเลขทั่งหมดที่มีอยู่(คือฐานข้อมูล) และตัวที่จะเอามาเทียบคือตัวย่อย แต่ตัวย่อยพวกนี้อาจมีมากกว่า1จุดก็เลยอยากให้ตัวเลขที่มีมากกว่า1จุดsumรวมกัน แต่อยากได้ค่าที่สรุปจากตัวมันเองให้ตรงกันตามFileแนบไปก็เท่านั้นครับ
ส่วนสาเหตุของปัญหาผมหาเจอและคือ ตัวฐานข้อมูลมีตัวเลขไม่เพียงพอกับตัวเทียบ เลยทำให้ยอดที่ได้ไม่ตรงกับตัวที่sumมา
สรุปนะครับคือ ข้อมูลที่ต้องการหา มากกว่า ตัวที่มีอยู่ในฐานข้อมูลครับ เลยทำให้ยอดหายและไม่ตรง
ต้องขอขอบคุณอีกครั้งครับที่แนะนำ(ตั้งแต่เข้าเวปนี้มาไอ้ที่ไม่ค่อยรู้ก็รู้เยอะขึ้น ส่วนไอ้ที่ไม่รู้เลยก็พอได้รู้)
บางครั้งเห็น เพื่อนๆพี่ๆในกระทู้ถามสาเหตุที่ทำไม่ได้ พอเราเห็นหรือได้อ่านก็อยากลองศึกษาดูบ้าง บางครั้งก็สมมุติ มาถามบ้างลองดูเองบ้างก็ดีนะครับ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

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

#7

Post 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 คัดลอกลงมา
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
sitrapong
Member
Member
Posts: 17
Joined: Sun Oct 06, 2013 12:37 pm

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

#8

Post by sitrapong »

ขอบคุณมากครับbank9597พึ่งจะกลับมาจากที่ทำงาน เดียวจะลองทำทีละสูตรก่อนนอนครับ
Post Reply