ข้ามไปที่เนื้อหาหลัก

รายงานยอดไม่ตรงกัน เป็นที่คนหรือโปรแกรม

วันนี้ผมต้องใช้โปรแกรมตารางงานที่ยอดนิยมอย่าง Microsoft Office Exel เปรียบเทียบข้อมูล 2 คอลัมน์ ว่าถูกต้องตรงกันหรือไม่

ตอนแรกก่ะว่าจะใช้สายตาอันเฉียบคมพิจารณาดูทีละบรรทัด แต่ได้ไม่ถึงร้อยบรรทัดก็ตาลายแล้วครับ เลยพยายามค้นหาวิธีใช้งานสูตรใน Exel ให้ช่วยในการตรวจสอบแทนการตรวจด้วยตาเปล่า เพราะมีข้อมูลตั้ง 3,225 รายการ กว่าจะดูจนครบคงไม่ต้องทำการทำงานอะไรแล้ว T_T

ข้อมูลมี 3 คอลัมน์ครับ
     A              B               C
| ต้นทุน  |  ค่าเสื่อม |  ยอดสุทธิ |
   5000          1200       3800

ซึ่ง ต้นทุน = ค่าเสื่อม + ยอดสุทธิ


แต่ผลรวมออกมา ค่าเสื่อม + ยอดสุทธิ ดันไม่ตรง

ผมรวมที่ว่าก็มาจากข้อมูลสามพันกว่ารายการนั่นเอง ไล่กันไม่หวาดไม่ไหว ว่าข้อมูลแถวใดที่คำนวณผิด


วิธีการแก้ปัญหาที่ใช้ก็คือ เพิ่มคอลัมน์ที่ 4 (คอลัมน์ D) สำหรับเก็บ ข้อมูล ค่าเสื่อม + ยอดสุทธิ
โดยใช้คำสั่ง

=SUM(B1:C1)

แล้วดับเบิ้ลคลิกลงตรงมุม เพื่อให้มันก๊อปปี้สูตรและวางอัตโนมัติจนครบ 3,225 แถว

เมื่อได้ข้อมูลมาแล้วก็นำมาเปรียบเทียบกับ ต้นทุน ซึ่งจะต้องเท่ากัน
โดยเก็บผลลัพธ์การเปรียบเทียบไว้ในคอลัมน์ใหม่ ก็คือ คอลัมน์ที่ 5 (คอลัมน์ E)
โดยใช้คำสั่ง

=IF(A1=D1," ","No Match")


แล้วดับเบิ้ลคลิกลงตรงมุม เพื่อให้มันก๊อปปี้สูตรและวางอัตโนมัติจนครบ 3,225 แถว

ในตอนนี้คอลัมน์ที่ 5 ก็จะปรากฏคำว่า "No Match" ให้เห็นเมื่อผลรวมไม่เท่ากัน

เราก็ให้ทำการเรียงข้อมูลจากมาก ไปหาน้อย ซะจะได้เห็นรายการที่ No Match มาก่อน



และแล้วผมก็ได้ข้อสรุปหลังจากที่วิเคราะห์อยู่นาน เพราะค่าที่ได้เป็นดังนี้
   ต้นทุน    |ค่าเสื่อม    |   สุทธิ 

8,678.99   | 4,339.49   | 4,339.49 

ซึ่ง ค่าเสื่อม + สุทธิ = 8,678.98




จึงรู้ว่าไม่ได้ทำการปัดเศษขึ้น เพราะยอดทศนิยม 3 หลักเป็น

   ต้นทุน    |ค่าเสื่อม    |   สุทธิ 

8,678.99   |4,339.495   |4,339.495 


แต่พอสั่งปัดเศษด้วยก็ดันกลายเป็น

   ต้นทุน    |ค่าเสื่อม    |   สุทธิ 

8,678.99   |4,339.50   |4,339.50 

ซึ่ง ค่าเสื่อม + สุทธิ = 8,679.00 


ก็ยังผิดอยู่ดีครับ เพราะ ค่าเสื่อม + สุทธิ ต้องเท่ากันกับ ต้นทุน

จึงได้ข้อสรุปจากคนที่ตรวจสอบรายงานว่า
ยอดสุทธิต้องคงค่าเดิมไว้ ยอดที่จะมีการเคลื่อนไหวได้คือ ค่าเสื่อม

ดังนั้นจึงปรับโค๊ดของโปรแกรมเป็น เมื่อมีเลขทศนิยม 3 หลักในยอดของค่าเสื่อม และสุทธิ
ให้ทำการปัดเศษให้กับค่าเสื่อมด้วย

   ต้นทุน    |ค่าเสื่อม    |   สุทธิ 


8,678.99   |4,339.50   |4,339.49

ซึ่ง ค่าเสื่อม + สุทธิ = 8,678.99



ซึ่งก็แก้ไขเรียบร้อยแล้ว แต่ก็ยังไม่แน่ใจว่าจะมีข้อผิดพลาดอื่นอีกหรือไม่
เพราะเลขทศนิยม 3 หลักก็ไม่แน่ว่าค่าที่ต้องปัด จะอยู่แต่ ค่าเสื่อม อย่างเดียวหรือไม่
ก็ต้องรอลุ้นกันอีกที ^^


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ร้อยละ ทศนิยม 2 ตำแหน่งบวกคืน ไม่เท่ากับ 100 และ ปัญหาการคำนวณเลขทศนิยม เมื่อปัดเศษแล้วค่าที่บวกคืนไม่เท่าเดิม

กรณีนี้เป็นการทดสอบคำนวณเลขที่ต้องหารครึ่ง ตัวอย่างเช่น 2.33 / 2 = 1.165 กรณีนี้ถ้าเก็บค่านี้ในฐานข้อมูลที่กำหนดให้มีทศนิยมเพียง 2 หลัก ในฟิลด์ 2 ฟิลด์ซึ่งแต่ละฟิลด์จะถูกปัดขึ้นเป็น 1.7 เมื่อนำมาบวกกลับ 1.17 + 1.17 = 2.34 ถ้าอย่างนั้นเราก็ต้องกำหนดให้ฟิลด์ที่ใช้เก็บข้อมูลสามารถเก็บเลขทศนิยมได้หลายๆตัว ก็จะเก็บเลขทั้งสามหลักไว้ในฐานข้อมูลเลย 1.165 + 1.165 จะได้ 2.33 พอดี แต่ตอนเราแสดงรายงาน ก็จำเป็นจะต้องแสดงเลขทศนิยมเพียงแค่ 2 หลักอยู่ดี แล้วเราจะทำอย่างไรล่ะทีนี้ ก็เก็บมันเป็นเลขทศนิยมเต็มจำนวนซะแล้วตอนแสดงก็ต้องปัดเศษอยู่ดี เพราะค่า 1.165 ถ้าใช้ฟังก์ชั่นปัดเศษลง ก็จะเหลือ 1.16 แต่ถ้าปัดขึ้นก็จะเป็น 1.17 ซึ่งตัวเลขทั้งสองตัว เมื่อนำมารวมกัน ยังไงๆ ก็ไม่เท่ากับ 2.33 อยู่ดี (1.16+1.16 = 2.32,    1.17+1.17 = 2.34 ) อีกตัวอย่างนึงครับเป็นการถอด VAT ราคาสินค้า การคิดค่าทศนิยม แล้วผลรวมเพี้ยน เนื่องจากการปัดเศษ แล้วยอดเกินบ้าง ขาดบ้าง ตัวอย่างการถอด VAT ซื้อของมา 573.50 บาท ถอด VAT ออกมาได้ (573.50*7) / 100 = 40.145 ราคาสินค้า จะได้เป็น 573.50 - 40.145 = 533.3

FPDF ภาษาไทย กับ วรรณยุกต์ลอย

สำหรับงานเขียนโปรแกรมเว็บแอพฯ ด้วย PHP ที่ต้องทำการส่งออกข้อมูลเป็นไฟล์เอกสาร PDF นั้น เมื่อลองค้นดูแล้วก็เจอกับ FPDF เป็นคลาสที่เขียนขึ้นมาสำหรับงานนี้โดยเฉพาะ แต่กับภาษาไทยแล้วก็ต้องเจอกับปัญหาสุดคลาสสิคคือ รองรับภาษาไทยไม่ร้อยเปอร์เซ็นต์ ^^" บทความที่สอนการใช้งานเบื้องต้นที่ครอบคลุมการทำงานของ FPDF http://www.select2web.com/category/fpdf จะมีบทความแนะนำการใช้ฟอนต์ภาษไทยอยู่ที่ลิงค์นี้ http://www.select2web.com/fpdf/fpdf-lesson-10.html ดาวน์โหลดและสร้างฟอนต์มาใช้เอง http://witkub.blogspot.com/2011/11/fpdf.html สำหรับวิธีแก้ไขปัญหาวรรณยุกต์ลอย ลองดูวิธีจากที่นี่ http://punnawatt.blogspot.com/2009/07/pdf.html สุดท้ายแล้วลองทดลองมาหมด ก็ยังไม่ได้คำตอบที่ตรงใจครับ เพราะไม่สามารถแก้สระลอยได้อย่างแท้จริง เพราะเงื่อนไขข้อมูลจริงไม่อาจจะทำให้เหมือนในตัวอย่างได้ ก็เลยถอดใจเรื่องวรรณยุกต์ลอย นอกจากปัญหาเรื่องวรรณยุกต์ลอย แล้วฟอนต์บางตัวก็เกิดปัญหาวรรณยุกต์ซ้อนทับกันด้วย เช่นคำว่า "นี้" เมื่อผลลัพธ์ออกมา สระอี และวรรณยุกต์โท จะทับกัน สรุป 1. ดาวน์โหล

FPDI มาทำให้การสร้างเอกสาร PDF ด้วย PHP ง่ายขึ้นกันเถอะ

เคยใช้กันรึยังครับ เหมาะสำหรับงานสร้างแบบฟอร์ม PDF แล้วกรอกข้อมูลตามแบบฟอร์มทีหลัง หลักการคือโหลด PDF เข้ามา แล้วก็เขียนไฟล์ใหม่ขึ้นมา ส่วนที่มันไดนามิกมากๆ คงไม่เหมาะเท่าไหร่ ถ้าให้มองการทำงานของไลบรารี่ตัวนี้ ก็เหมือนกับที่เราสั่งทำใบเสร็จรับเงิน แล้วกรอกข้อมูลทีหลังนั่นเอง 1. สร้าง PDF เปล่าๆ ที่มีแค่ส่วนหัว และส่วนท้าย 2. เติมข้อมูลรายการลงในส่วนกลาง ถ้าเกินจำนวนแถวที่กำหนดให้ขึ้นหน้าใหม่ http://www.setasign.com/products/fpdi/about/ ตัวอย่างในลิงค์ต่อไปนี้ จะเป็นการนำข้อความในไฟล utf8test.txt ไปแทรกในไฟล์ logo.pdf http://www.setasign.com/products/fpdi/demos/tcpdf-demo/ PHP  CI  MANIA   -  PHP Code Generator  โปรแกรมช่วยสร้างโค้ด  "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    http://fastcoding.phpcodemania.com

PHP CI MANIA