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] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#1
Post
by Totem » Wed Jan 20, 2016 9:03 am
เรียน อาจารย์และเพื่อนสมาชิกทุกคน
วิธีหาค่าร้อยละในช่อง C4 : C8 แล้วปัดเศษจุดทศนิยม 2 ตำแหน่ง และให้ผลรวมในช่อง C9 เป็น 100% เสมอ
เพราะบางครั้งเกิน100% บางครั้งไม่ถึง100% จะมีวิธีอย่างไรให้ถูกต้องครับ
ขอบคุณครับ
รวม.xlsx
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 » Wed Jan 20, 2016 10:41 am
ปกติการคำนวณแบบนี้ (มีการใช้ Round ) ผลรวมจะเกิด Diff ครับ
ซึ่งโดยมาก เราอาจจะใช้วิธีปัดเศษเข้าไปในค่าใดค่าหนึ่งตายตัว
หรือใช้วิธีวางไว้ที่ตัวที่มีค่ามากที่สุดก็ได้
You do not have the required permissions to view the files attached to this post.
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#3
Post
by Totem » Wed Jan 20, 2016 10:59 am
menem wrote: ปกติการคำนวณแบบนี้ (มีการใช้ Round ) ผลรวมจะเกิด Diff ครับ
ซึ่งโดยมาก เราอาจจะใช้วิธีปัดเศษเข้าไปในค่าใดค่าหนึ่งตายตัว
หรือใช้วิธีวางไว้ที่ตัวที่มีค่ามากที่สุดก็ได้
ถ้าช่อง C4:C8 ไม่มีใช้ Round ก็ได้ ให้รวมค่าเป็น 100 จะมีวิธีไหนครับ เพราะหากข้อมูลในช่องจำนวนมีค่ามากสุดเท่ากันก็จะให้สูตรลักษณะนี้ไม่ได้ เช่น ช่อง B5 = 61 รวมเท่ากับ 100.01 สูตรจะไม่ครอบคลุมปัญหานี้
หรือใช้วิธีปัดเศษเข้าไปในค่าใดค่าหนึ่งตายตัว หากมีค่าอื่นที่จำนวนเท่ากันกับค่าหนึ่งที่ปัดเศษตายตัว จะทำให้
ค่าร้อยละที่แสดงออกมาทั้ง 2 รายการไม่เท่ากันครับ
menem
Silver
Posts: 549 Joined: Mon Jan 26, 2015 11:02 am
#4
Post
by menem » Wed Jan 20, 2016 11:16 am
ในกรณีที่ใช้สูตรแบบไม่มี Round มากำกับ
ผลรวมจะเป็น 100% ครับ แต่เวลาเราเอามาดู
แล้วรวมโดยใช้เครื่องคิดเลขข้างนอก อาจจะ
ไม่เท่ากับ 100% เพราะการแสดงผล กับค่าที่
Excel คำนวณได้จริงมันต่างกันอยู่ครับ
กรณี Fix การปัดเศษเข้าไปที่ตัวใดตัวหนึ่งโดยตรงสูตร
จะเป็น =100-sum( ผลการคำนวณของบรรทัดอื่น ๆ )
วิธีนี้จะดีในแง่ที่ว่าเรารู้เสมอว่าการปัดเศษจะกระทำกับ
รายการไหน (และไม่มีโอกาสปัดซ้ำ เหมือนกับวิธีการ
วางในค่า Max หากค่า Max มีมากกว่าหนึ่งรายการ)
แต่ข้อเสียที่อาจจะมีขึ้นคือ กรณีรายการที่ Fixed การปัดเศษ
มีค่าเป็น 0 มันก็จะไม่สมเหตุสมผลที่จะปัดเข้าไปในรายการนั้น ๆ ครับ
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#5
Post
by Totem » Wed Jan 20, 2016 11:28 am
menem wrote: ในกรณีที่ใช้สูตรแบบไม่มี Round มากำกับ
ผลรวมจะเป็น 100% ครับ แต่เวลาเราเอามาดู
แล้วรวมโดยใช้เครื่องคิดเลขข้างนอก อาจจะ
ไม่เท่ากับ 100% เพราะการแสดงผล กับค่าที่
Excel คำนวณได้จริงมันต่างกันอยู่ครับ
กรณี Fix การปัดเศษเข้าไปที่ตัวใดตัวหนึ่งโดยตรงสูตร
จะเป็น =100-sum( ผลการคำนวณของบรรทัดอื่น ๆ )
วิธีนี้จะดีในแง่ที่ว่าเรารู้เสมอว่าการปัดเศษจะกระทำกับ
รายการไหน (และไม่มีโอกาสปัดซ้ำ เหมือนกับวิธีการ
วางในค่า Max หากค่า Max มีมากกว่าหนึ่งรายการ)
แต่ข้อเสียที่อาจจะมีขึ้นคือ กรณีรายการที่ Fixed การปัดเศษ
มีค่าเป็น 0 มันก็จะไม่สมเหตุสมผลที่จะปัดเข้าไปในรายการนั้น ๆ ครับ
ใช่ครับ ในกรณีที่ใช้สูตรแบบไม่มี Round มากำกับ
ผลรวมจะเป็น 100% แล้วกรณี Fix ก็ยังมีการแก้ไขปัญหายังไม่ครอบคลุม ผมลองทำหลายแบบแล้ว ยังไม่สำเร็จครับ
จะมีวิธีไหนหรือไม่...
menem
Silver
Posts: 549 Joined: Mon Jan 26, 2015 11:02 am
#6
Post
by menem » Wed Jan 20, 2016 11:50 am
งั้นลองแบบนี้ดูครับ
- คำนวณหาว่ามี Diff เท่าไหร่
- ตรวจสอบการ Allocate ค่า Diff
- การวางจะวางครั้งเดียว กับค่าที่มากที่สุดของช่วง
You do not have the required permissions to view the files attached to this post.
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#7
Post
by Totem » Wed Jan 20, 2016 12:42 pm
menem wrote: งั้นลองแบบนี้ดูครับ
- คำนวณหาว่ามี Diff เท่าไหร่
- ตรวจสอบการ Allocate ค่า Diff
- การวางจะวางครั้งเดียว กับค่าที่มากที่สุดของช่วง
หากค่าที่มากที่สุดของช่วงนั้นเท่ากัน เช่น B4 = 61 , B5 = 61 ที่ช่อง C9 รวมได้ 100 แต่ ร้อยละในช่อง C4 = 44.21 ,
C5 = 44.20 เกิดปัญหาว่าไม่ตรงกันครับ
XDoll
Bronze
Posts: 261 Joined: Sun Mar 03, 2013 9:23 pm
#8
Post
by XDoll » Wed Jan 20, 2016 1:09 pm
C4:C8 ให้เอา Round ออกครับ
ส่วน C9 ให้เปลี่ยนเป็น =ROUND(SUMPRODUCT(C4:C8),2)
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#9
Post
by Totem » Wed Jan 20, 2016 1:30 pm
XDoll wrote: C4:C8 ให้เอา Round ออกครับ
ส่วน C9 ให้เปลี่ยนเป็น =ROUND(SUMPRODUCT(C4:C8),2)
หากเอา Round ออกเช่นนี้ C4:C8 ปรับให้เป็นจุดทศนิยม 2 ตำแหน่ง จะได้ 99.99 เมื่อใช้สูตร=ROUND(SUMPRODUCT(C4:C8),2)ทำให้ C9 = 100 แต่จำนวน C4:C8 จะยังไปถูกต้องครับ
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#10
Post
by Totem » Wed Jan 20, 2016 3:07 pm
Totem wrote: XDoll wrote: C4:C8 ให้เอา Round ออกครับ
ส่วน C9 ให้เปลี่ยนเป็น =ROUND(SUMPRODUCT(C4:C8),2)
หากเอา Round ออกเช่นนี้ C4:C8 ปรับให้เป็นจุดทศนิยม 2 ตำแหน่ง จะได้ 99.99 เมื่อใช้สูตร=ROUND(SUMPRODUCT(C4:C8),2)ทำให้ C9 = 100 แต่จำนวน C4:C8 จะยังไม่ถูกต้องครับ
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#11
Post
by DhitiBank » Wed Jan 20, 2016 3:39 pm
ก่อนอื่น ขอถามก่อนว่าทศนิยมหลักที่ 2 สำคัญมากหรือไม่ครับ เพราะหากไม่สำคัญอะไรมาก แค่อยากให้ตรงกันเฉยๆ ผมมักจะใช้วิธีนี้คือ
1. C4:C7 ใช้สูตรตามปกติ (มี Round)
2. C8 คีย์
=IF(ROUND(B8/$B$9*100,2)+SUM($D$4:$D$7)=100,ROUND(B8/$B$9*100,2),100-SUM($D$4:$D$7))
มันก็จะตรงกันครับ
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#12
Post
by Totem » Wed Jan 20, 2016 4:25 pm
DhitiBank wrote: ก่อนอื่น ขอถามก่อนว่าทศนิยมหลักที่ 2 สำคัญมากหรือไม่ครับ เพราะหากไม่สำคัญอะไรมาก แค่อยากให้ตรงกันเฉยๆ ผมมักจะใช้วิธีนี้คือ
1. C4:C7 ใช้สูตรตามปกติ (มี Round)
2. C8 คีย์
=IF(ROUND(B8/$B$9*100,2)+SUM($D$4:$D$7)=100,ROUND(B8/$B$9*100,2),100-SUM($D$4:$D$7))
มันก็จะตรงกันครับ
สรุปได้ว่า
ช่อง C8 ใช้สูตรข้างต้น = 15.38
ช่อง C4 = 67.03
ช่อง C5 = 15.38
ช่อง C6 = 2.20
ช่อง C7 = 0.00
รวม ช่อง C9 = 99.99
ก็ยังไม่ตรงครับ
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#13
Post
by DhitiBank » Wed Jan 20, 2016 4:27 pm
ลองดูในไฟล์แนบครับ
You do not have the required permissions to view the files attached to this post.
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#14
Post
by Totem » Wed Jan 20, 2016 5:47 pm
ทศนิยม 2 ตำแหน่งจะมีความสำคัญ เมื่อมีจำนวนเท่ากันในช่อง B2:B8 ในตัวอย่างนี้ คำตอบ C2=15.38 และ C8=15.38
จะต้องเท่ากันครับ ถ้าว่าปัดเศษที่จำนวนไม่เท่ากัน ก็ไม่ถือว่าสำคัญ ปัดเศษได้เลย ให้ได้ รวมคือ 100 ครับ
DhitiBank
Gold
Posts: 1676 Joined: Mon Oct 15, 2012 12:07 am
#15
Post
by DhitiBank » Wed Jan 20, 2016 6:04 pm
Totem wrote: ทศนิยม 2 ตำแหน่งจะมีความสำคัญ เมื่อมีจำนวนเท่ากันในช่อง B2:B8 ในตัวอย่างนี้ คำตอบ C2=15.38 และ C8=15.38
จะต้องเท่ากันครับ ถ้าว่าปัดเศษที่จำนวนไม่เท่ากัน ก็ไม่ถือว่าสำคัญ ปัดเศษได้เลย ให้ได้ รวมคือ 100 ครับ
จริงด้วยครับ
ผมลืมคิดไป ถ้าอย่างนั้น ลองแบบนี้ครับ
D3 คีย์ Find
D4 คีย์
=IF($C$9=100,0,IF(SUM(D$3:D3)=1,0,IF(COUNTIF($C$4:$C$8,C4)=1,1,0)))
enter --> คัดลอกลงถึง D8
E4 คีย์
=IF($C$9<>100,IF(D4=0,C4,100-SUMPRODUCT(--($D$4:$D$8=0),$C$4:$C$8))) สูตรนี้ไม่เอาครับ ขอปรับเป็นด้านล่าง
enter --> คัดลอกลงถึง E8
E9 ลองหาผลรวมดูครับ
แก้ไขครับ: แต่ในไฟล์ไม่ได้แก้
E4 คีย์
=IF(D4=0,C4,100-SUMPRODUCT(--($D$4:$D$8=0),$C$4:$C$8))
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
#16
Post
by menem » Wed Jan 20, 2016 9:36 pm
ลองดูอีกทีครับ
You do not have the required permissions to view the files attached to this post.
Totem
Silver
Posts: 650 Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007
#17
Post
by Totem » Thu Jan 21, 2016 9:47 am
DhitiBank wrote: Totem wrote: ทศนิยม 2 ตำแหน่งจะมีความสำคัญ เมื่อมีจำนวนเท่ากันในช่อง B2:B8 ในตัวอย่างนี้ คำตอบ C2=15.38 และ C8=15.38
จะต้องเท่ากันครับ ถ้าว่าปัดเศษที่จำนวนไม่เท่ากัน ก็ไม่ถือว่าสำคัญ ปัดเศษได้เลย ให้ได้ รวมคือ 100 ครับ
จริงด้วยครับ
ผมลืมคิดไป ถ้าอย่างนั้น ลองแบบนี้ครับ
D3 คีย์ Find
D4 คีย์
=IF($C$9=100,0,IF(SUM(D$3:D3)=1,0,IF(COUNTIF($C$4:$C$8,C4)=1,1,0)))
enter --> คัดลอกลงถึง D8
E4 คีย์
=IF($C$9<>100,IF(D4=0,C4,100-SUMPRODUCT(--($D$4:$D$8=0),$C$4:$C$8))) สูตรนี้ไม่เอาครับ ขอปรับเป็นด้านล่าง
enter --> คัดลอกลงถึง E8
E9 ลองหาผลรวมดูครับ
แก้ไขครับ: แต่ในไฟล์ไม่ได้แก้
E4 คีย์
=IF(D4=0,C4,100-SUMPRODUCT(--($D$4:$D$8=0),$C$4:$C$8))
menem wrote: ลองดูอีกทีครับ
ลองสูตรทั้งสองแบบและได้ปรับอีกเล็กน้อย นำไปใช้ได้ตามต้องการครับ
ขอบคุณ คุณDhitiBankและคุณmenem ครับ