snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#1
Post
by phutta » Fri Sep 25, 2015 6:33 pm
สร้างเอกสารเพื่อทำใบกำกับภาษีโดยมีเพื่อปริ๊นผ่านกระดาษที่มีฟอร์ม โดยการดึงข้อมูลออกมาทีละหน้า และปริ๊น ซึ่งหน้าสุดท้ายอาจมีจำนวนแถวที่น้อยกว่าทุกหน้า ถ้าใช้ Vlookup จะทำให้เกิด Error แถวที่ไม่มีข้อมูล และหน้าสุดท้ายมีการ Sum ข้อมูล
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30920 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#2
Post
by snasui » Fri Sep 25, 2015 8:40 pm
ทำตามด้านล่างครับ
เซลล์ B13 คีย์
=IF(INDEX(PACKING!B$2:B$2000,9*(START-1)+(ROWS(B$13:B13)))="","",INDEX(PACKING!B$2:B$2000,9*(START-1)+(ROWS(B$13:B13))))
Enter > Copy ลงด้านล่างและ Copy ไปใช้กับ Column อืน ๆ ตามต้องการ
เซลล์ I23 คีย์
=IF(TOTAL=START,SUM(PACKING!F:F),"")
Enter > ปรับใช้กับ I24:I25
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#3
Post
by phutta » Mon Sep 28, 2015 11:00 am
ขอบคุณคะ วิธีนี้จะเป็นการทำทีละหน้าและปริ๊นใช่ไหมคะ แต่ถ้าเราอยากเขียนโดยให้มันอ้างอิง กับคอลัมน์ที่สามารถกำหนดได้เลยว่าต้องการปริ๊นหน้าที่เท่าไร จะต้องเขียน VBA ใช่ไหมคะ
snasui
Site Admin
Posts: 30920 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#4
Post
by snasui » Mon Sep 28, 2015 6:57 pm
ที่เขียนเป็นสูตรด้านบนเลือกหน้าที่ต้องการจะ Print ได้อยู่แล้วไม่ทราบว่าต้องการคำตอบเป็นเช่นไร สำหรับการเขียน VBA เป็นการทำให้เป็นอัตโนมัติหรือเป็นลักษณะการคำนวณแบบซับซ้อนเป็น Loop เช่นนี้เป็นต้น หากแค่ดึงข้อมูลมาจากตำแหน่งใด ๆ ด้วยจำนวนเท่านั้นเท่านี้รายการ สามารถใช้สูตรจัดการได้ครับ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#5
Post
by phutta » Tue Sep 29, 2015 3:56 pm
เข้าใจแล้วคะ ตอนแรกยังไม่เข้าใจว่ามันเกี่ยวกับการเลือกหน้ายังไง แต่เมื่อลองแก้ไขตัวเลข M4 ข้อมูลก็ถูกเปลี่ยนไป ขอบคุณมากคะ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#6
Post
by phutta » Tue Sep 29, 2015 4:03 pm
แล้วเราจะรู้ได้ยังไงค่ะ ว่าหน้าสุดท้ายคือหน้าที่เท่าไร เพื่อจะได้กำหนดหน้า Finish ได้คะ
snasui
Site Admin
Posts: 30920 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#7
Post
by snasui » Tue Sep 29, 2015 6:07 pm
จากตัวอย่างนี้ต้องการดึงมาหน้าละ 9 รายการ หากต้องการจะทราบว่าหน้าสุดท้ายเป็นเท่าใดให้นำรายการทั้งหมดหารด้วย 9 ก็จะได้จำนวนหน้า อย่าลืมบวกด้วยเศษจากการหารด้วย 9 เพิ่มเข้าไปอีก 1 หน้าครับ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#8
Post
by phutta » Tue Sep 29, 2015 8:33 pm
ขอบคุณคะ เป็นสิ่งที่คิดไม่ถึงจริงๆคะ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#9
Post
by phutta » Mon Oct 12, 2015 2:08 pm
เมื่อลอง copy จริง Data จริงมาวางไว้ใน Sheet Packing และใช้วิธีคำนวณหน้ากระดาษโดยใช้สูตร =INT(COUNT(PACKING!$A$6:$A$2000)/9) ทำไมถึง = 0 คะ แต่ลองเปลี่ยนไป count คอลัมน์ที่เป็นตัวเลข ค่าก็จะขึ้น
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#10
Post
by DhitiBank » Mon Oct 12, 2015 10:46 pm
เป็นเพราะสูตร INT ครับ
การนับจำนวนหน้าในกรณีที่มีเศษเหลือ (คือไม่เต็มหน้า) จะต้องปัดเพิ่มเป็น 1 หน้า แต่สูตร INT จะปัดเศษทิ้ง นั่นทำให้เมื่อข้อมูลมีไม่เต็มหน้า เช่น มี 1-8 items ก็จะได้ 0 หน้าครับ ดังนั้น อาจปรับสูตรเป็นอย่างอื่นเพื่อให้ปัดเศษขึ้น เช่น
=Roundup(Count(...)/9,0)
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#11
Post
by phutta » Fri Nov 20, 2015 2:37 pm
ขอบคุณคะ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#12
Post
by phutta » Fri Nov 20, 2015 2:51 pm
snasui wrote: ทำตามด้านล่างครับ
เซลล์ B13 คีย์
=IF(INDEX(PACKING!B$2:B$2000,9*(START-1)+(ROWS(B$13:B13)))="","",INDEX(PACKING!B$2:B$2000,9*(START-1)+(ROWS(B$13:B13))))
Enter > Copy ลงด้านล่างและ Copy ไปใช้กับ Column อืน ๆ ตามต้องการ
เซลล์ I23 คีย์
=IF(TOTAL=START,SUM(PACKING!F:F),"")
Enter > ปรับใช้กับ I24:I25
ได้ทำตามสูตรนี้แล้ว และสามารถใช้งานได้ดีคะ แต่มีปัญหาตรงที่ผู้ใช้งานได้ลบบันทัดที่ 1 ในหน้า Packing ออกทำให้สูตรเลื่อนตาม เป็น
=IF(INDEX(PACKING!B$1:B$1999,9*(START-1)+(ROWS(B$13:B13)))="","",INDEX(PACKING!B$1:B$1999,9*(START-1)+(ROWS(B$13:B13))))
และถ้า Insert บันทัดเพิ่มขึ้นสูตรก็จะปรับตาม ทำยังไงจะสามารถล็อกให้สูตรอยู่เริ่มตรง B2 โดยไม่เลื่อนตามบันทัดที่ลบหรือเพิ่มคะ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#13
Post
by bank9597 » Fri Nov 20, 2015 3:47 pm
ห้ามลบบรรทัดครับ เพราะจะทำให้สูตรเลื่อนตามแน่นอน ถึงจะเขียนสูตรให้ล้อคไว้แล้วก็ตามครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#14
Post
by phutta » Fri Nov 20, 2015 5:25 pm
ถ้ายังงั้นคงให้ข้อมูลเริ่มต้นที่บรรทัดที่ 2 รองจากหัวข้อ จะได้ไม่ต้องลบหรือเพิ่มบรรทัดคะ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#15
Post
by phutta » Mon Nov 23, 2015 1:09 pm
เมื่อดึงข้อมูลออกมาแล้ว แต่อยากบันทึกว่าแต่ละหน้า มียอด Sum (I14:I22) เท่ากับเท่าไร ลองใช้สูตรนี้แล้ว =IF(L14=NO,SUM(I14:I22),"") ยอด Sum จะถูกเปลี่ยนไปตามแต่ละ No ที่เปลี่ยนไปคะ แต่อยากให้โชว์เลยว่า NO 1 = Sum (I14:I22), NO 2 = Sum (I14:I22) เพื่อนำข้อมูลมาเช็คอีกครั้ง
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#16
Post
by bank9597 » Mon Nov 23, 2015 1:29 pm
แนบไฟล์ล่าสุดมาดูหน่อยครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#17
Post
by phutta » Mon Nov 23, 2015 2:00 pm
เพื่อเป็นการเช็คว่าแต่ละหน้า ยอด Sum I14:I22 เท่ากับเท่าไร
สาเหตุ ที่ไม่ Sum ใน Packing เลย เพราะอาจมีการเพิ่มหรือลบบรรทัดทำให้สูตรที่ใช้โชว์เปลี่ยนไป แต่ยอด Sum หน้าสุดท้ายถูกต้อง จะไม่สามารถเช็คได้คะ
You do not have the required permissions to view the files attached to this post.
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#18
Post
by bank9597 » Mon Nov 23, 2015 2:44 pm
ที่ I25 คีย์ =MAX(IF($L$14:$L$17=NO,M14:M17)) กด Ctrl+Shift+Enter
You do not have the required permissions to view the files attached to this post.
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
phutta
Member
Posts: 42 Joined: Thu Oct 03, 2013 11:31 am
#19
Post
by phutta » Mon Nov 23, 2015 3:02 pm
ขอโทษทีคะ อธิบายไม่สอดคล้อง ได้แนบเอกสารและวิธีทำให้ดูอีกครั้งคะ คือ เมื่อกดเปลี่ยน No ยอด Sum ของแต่ละหน้าจะเปลี่ยนตาม
You do not have the required permissions to view the files attached to this post.
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#20
Post
by bank9597 » Mon Nov 23, 2015 3:29 pm
ที่ M14 คีย์ =INDEX(PACKING!$J$2:$J$36,SMALL(IF(PACKING!$J$2:$J$36<>"",ROW(PACKING!$J$2:$J$36)-ROW(PACKING!$J$2)+1),L14))
กด Ctrl+Shift+Enter แล้วคัดลอกลงมา
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ