snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
suracoom01
Member
Posts: 4 Joined: Sat Jan 28, 2017 5:41 pm
#1
Post
by suracoom01 » Mon Jan 30, 2017 9:43 am
สวัสดีครับ
ขอสอบถามปัญหานะครับ คือ ผมใช้สูตร VLOOKUP ในการแสดงรายละเอียดข้อมูลโดยใช้
ชื่องาน เป็นตัวคีย์ข้อมูล เพื่อให้รายละเอียดข้อมูลที่ต้องการแสดงผลออกมา
แต่ ติดปัญหาตรงที่ ผมอยากได้ข้อมูลเพิ่ม ดังนี้ ว/ด/ป รายละเอียดงาน ยอดเงิน(ส่วนแบ่ง)
อยากให้ 3 ส่วนนี้มันแสดงแยกย่อยออกมา จากจำนวนเงินรวม เช่น เลือก ชื่องาน B.B Export แผนก Depart
เลขที่ใบ Job DE 07302 จำนวนเงินรวม 8,295 อยากให้ข้อมูลแสดงเพิ่มขึ้นว่า
วันที่เท่าไหร่ ที่มีใครทำงานนี้บ้างแล้ว รายละเอียดงาน ที่ทำคืออะไร ได้ ยอดเงิน(ส่วนแบ่ง) เท่าไหร่
ตัวอย่างคำตอบประมานนี้ครับ
B.B Export ฝ่าย/แผนก Depart เลขที่ใบ Job DE 07302 จำนวนเงินรวม 8,295 วันที่ 26/12/2559
มีนาย ฉ ทำงาน สติ๊กเกอร์ 4,000 และนาย ช ทำงานไวนิล 4,295
ถ้าใช้สูตรVLOOKUPไม่ได้ก็เปลี่ยนสูตรใหม่ได้นะครับ
You do not have the required permissions to view the files attached to this post.
menem
Silver
Posts: 549 Joined: Mon Jan 26, 2015 11:02 am
#2
Post
by menem » Mon Jan 30, 2017 10:35 am
ผมใช้ Index , Match และ Indirect เข้ามาช่วยเพื่อสร้างเงื่อนไขการระบุตำแหน่ง
ไม่แน่ใจว่าตรงกับที่ต้องการหรือไม่นะครับ
หลักการคือ นับว่ามีรายการ > 1 หรือไม่ก่อน ( CountIF )
ถ้าใช่ ให้หาว่าอยู่ที่บรรทัดเท่าไหร่เป็นอันแรก ( MATCH )
และหาว่าอันถัด ๆ ไปอยู่ที่บรรทัดเท่าไหร่ ( MATCH , INDIRECT )
สุดท้ายจะใช้ INDEX เพื่อดึงข้อมูลที่ต้องการออกมา
You do not have the required permissions to view the files attached to this post.
suracoom01
Member
Posts: 4 Joined: Sat Jan 28, 2017 5:41 pm
#3
Post
by suracoom01 » Mon Jan 30, 2017 11:41 am
menem wrote: ผมใช้ Index , Match และ Indirect เข้ามาช่วยเพื่อสร้างเงื่อนไขการระบุตำแหน่ง
ไม่แน่ใจว่าตรงกับที่ต้องการหรือไม่นะครับ
หลักการคือ นับว่ามีรายการ > 1 หรือไม่ก่อน ( CountIF )
ถ้าใช่ ให้หาว่าอยู่ที่บรรทัดเท่าไหร่เป็นอันแรก ( MATCH )
และหาว่าอันถัด ๆ ไปอยู่ที่บรรทัดเท่าไหร่ ( MATCH , INDIRECT )
สุดท้ายจะใช้ INDEX เพื่อดึงข้อมูลที่ต้องการออกมา
ตรงตามความต้องการเลยครับ ขอบคุณมากครับ
suracoom01
Member
Posts: 4 Joined: Sat Jan 28, 2017 5:41 pm
#4
Post
by suracoom01 » Mon Jan 30, 2017 12:30 pm
menem wrote: ผมใช้ Index , Match และ Indirect เข้ามาช่วยเพื่อสร้างเงื่อนไขการระบุตำแหน่ง
ไม่แน่ใจว่าตรงกับที่ต้องการหรือไม่นะครับ
หลักการคือ นับว่ามีรายการ > 1 หรือไม่ก่อน ( CountIF )
ถ้าใช่ ให้หาว่าอยู่ที่บรรทัดเท่าไหร่เป็นอันแรก ( MATCH )
และหาว่าอันถัด ๆ ไปอยู่ที่บรรทัดเท่าไหร่ ( MATCH , INDIRECT )
สุดท้ายจะใช้ INDEX เพื่อดึงข้อมูลที่ต้องการออกมา
ขอถามอีกสักอย่างนะครับ ผมสงสัยครับว่า แถวH บรรทัดที่ 14 สูตรมันหมายความว่ายังไงครับและก็ตรงD100000 ช่วยอธิบายให้ทีได้ไหมครับ =IF(I14<=$I$8,MATCH($F$8,INDIRECT("'"&$I$6&"'!D"&H13+1&":D1000000"),0)+H13,0)
You do not have the required permissions to view the files attached to this post.
menem
Silver
Posts: 549 Joined: Mon Jan 26, 2015 11:02 am
#5
Post
by menem » Tue Jan 31, 2017 12:37 am
สูตรนี้คือการ นำเอาบรรทัดที่เจอข้อมูลล่าสุด + 1
เป็นตำแหน่งเริ่มต้น เช่น ถ้าข้อมูลชุดแรกอยู่ที่บรรทัดที่ 2
สิ่งที่อยู่ใน Indirect จะเป็น D3:D1000000
และที่กำหนดเป็น D1000000 คือบรรทัดสุดท้ายที่จะใช้เพื่อ
ตรวจสอบข้อมูลครับ (จริง ๆ มีเกินกว่านี้อีกนิดหน่อย)
เมื่อได้ลำดับอ้างอิงของข้อมูลชุดถัดไป ก็จะต้องบวกด้วย
ลำดับที่เจอก่อนหน้า เพื่อให้ได้บรรทัดที่แท้จริงอีกทีครับ
suracoom01
Member
Posts: 4 Joined: Sat Jan 28, 2017 5:41 pm
#6
Post
by suracoom01 » Tue Jan 31, 2017 8:16 am
เข้าใจกระจ่างแล้วครับ ขอบคุณมากครับ