วันเสาร์ที่ 2 กรกฎาคม พ.ศ. 2554

ใช้ Excel ในการคำนวณ

วิธีคิดคำนวณของ Excel
สิ่งซึ่งผู้ใช้ Excel หลงผิดไปใช้กันโดยหารู้ไม่ว่า สิ่งที่ตนเองทำลงไปนั้นเป็นการทำร้ายตนเองก็คือ การเลือกใช้ Format เปลี่ยนแปลงรูปแบบการแสดงผล ไม่ว่าจะเป็นรูปแบบที่จัดให้ค่าในเซลล์ชิดซ้าย ชิดขวา หรือแสดงตรงกลางเซลล์ หรือจัดให้ตัวเลขแสดงหลักทศนิยมตามที่ตนต้องการก็ตาม
การใช้คำสั่ง Format ไม่ได้ส่งผลให้ค่าในเซลล์เปลี่ยนแปลงไปจากเดิม มีแต่รูปแบบที่แสดงออกมาเท่านั้นที่เปลี่ยนไป
ยกตัวอย่างเช่น เมื่อนำเซลล์ 2 เซลล์ซึ่งมีตัวเลข 0.33 เหมือนกันมาบวกกันให้แสดงผลลัพธ์ในเซลล์อีกเซลล์หนึ่งได้ผลลัพธ์เป็น 0.66 แล้วเราเปลี่ยน Format ให้แสดงทศนิยมเพียงหลักเดียว
เลข 0.33 จะแสดงเป็น 0.3
เลข 0.66 จะแสดงเป็น 0.7
เมื่อเป็น 0.7 แล้วจะทำให้ผู้ใช้ Excel สงสัยกันทีเดียวว่า ไฉน 0.3 บวกกัน 2 ครั้งจึงได้ผลลัพธ์ออกมาเป็น 0.7 ไปได้ ... นี่แหละตัวอย่างง่ายๆ ซึ่งช่วยให้เห็นความน่ากลัวของการใช้คำสั่ง Format โดยไม่รู้ตัวว่า เมื่อใดควรจะใช้ Format จึงจะทำให้เห็นว่า 0.3 บวกกัน 2 ครั้ง ย่อมได้ผลเป็น 0.6 ถูกต้องตามที่เห็น
ขอให้ใช้สูตรปรับค่าที่ได้จากการคำนวณก่อน
เพื่อให้ได้ค่ามีผลลัพธ์เท่ากับที่ต้องการอย่างแท้จริง
จากนั้นจึงค่อยใช้คำสั่ง Format ตามทีหลัง
Excel ใช้วิธีคำนวณตัวเลข โดยคิดแบบเลขฐาน 2 จากนั้นพอได้ผลลัพธ์แล้วจะแปลงกลับมาเป็นเลขฐาน 10 ซึ่งมีความละเอียดของตัวเลขสูงสุด (Excel Precision) 15 หลักเท่านั้น เช่น เมื่อพิมพ์เลข 12345678901234567890 ลงไปในเซลล์ จะพบว่า Excel ปรับตัวเลขใหม่เหลือเพียง 12345678901234500000 เท่านั้น
Repeating Binary Numbers
ตัวเลขซึ่งมักใช้เป็นตัวอย่างให้เห็นปัญหาของ Repeating Binary Numbers เช่น เลข 0.1 ซึ่งเป็นผลจากการคำนวณจากสูตรใดๆก็ได้
เมื่อสร้างสูตร =22.3-22.2 หรือ =2.3-2.2 จะพบว่าในเซลล์ได้ผลลัพธ์เป็น 0.1 แต่ถ้าปรับ Format ให้แสดงทศนิยมให้เห็นหลายๆตำแหน่ง จะพบว่า 0.1 ที่ได้นั้น ไม่ใช่ 0.1 จริงๆหรอก
สูตร =22.3-22.2 จะได้ผลลัพธ์ 0.100000000000001
สูตร =2.3-2.2 จะได้ผลลัพธ์ 0.0999999999999996
สาเหตุที่ครั้งแรกตัวเลขในเซลล์แสดงผลลัพธ์ 0.1 เท่านั้น เนื่องจาก Excel จะใช้ Format ตัวเลขตามแบบตัวเลขที่เราพิมพ์ลงไป ในเมื่อ 22.3 หรือ 22.2 หรือ 2.3 หรือ 2.2 ใช้ทศนิยมหลักเดียว จึงทำให้ผลลัพธ์แสดงด้วยทศนิยมหนึ่งหลักตาม
ค่า 0.1 ซึ่ง Excel คำนวณได้ในเลขฐานสอง จะเป็นเลข 000110011001100110011 ซ้ำไม่รู้จบ แต่เมื่อแปลงกลับมาเป็นเลขฐานสิบ ภายใต้ Precision ของตัวเลข 15 หลัก จึงต้องถูกปัดหรือตัดทิ้งให้เหลือเท่าที่จะนำไปใช้ต่อได้
สูตรคำนวณ 0.1 นี้เป็นเพียงตัวอย่างง่ายๆที่ช่วยให้เห็นความน่ากลัวของ Excel ได้ดี ซึ่งยังมีโอกาสอีกมากมายที่สูตรคำนวณอื่นๆ ทั้งที่เป็นสูตรบวกลบคูณหารและสูตรที่เป็น Function สำเร็จรูป สามารถคำนวณแล้วให้ผลลัพธ์ถูกต้องตามแบบของ Excel แต่ผิดเพี้ยนไม่ถูกต้องตามความต้องการของมนุษย์ ซึ่ง Format ไม่ได้ช่วยให้ตัวเลขเกิดความแม่นยำต่างไปจากเดิมแต่อย่างใด เราต้องใช้สูตรอื่นๆมาช่วยปรับค่าตัวเลขให้ถูกต้องตรงตามที่ต้องการก่อน จากนั้นจึงค่อยใช้ Format ตามทีหลัง
สูตร Round
สูตร Round นี้เชื่อว่าผู้ใช้ Excel ทั่วไปรู้จักกันดี แต่ไม่เคยนำมาสูตรใช้กันกับการคำนวณทุกเซลล์ เนื่องจากไม่ทราบเรื่อง Repeating Binary Numbers กันมาก่อน
สูตร Round ทำหน้าที่ปัดตัวเลขทั้งเลขหลักทศนิยมหรือเลขหลักอื่น ให้เหลือค่าเท่าจำนวนหลักที่ต้องการ
=Round( ตัวเลข, จำนวนหลัก)
จำนวนหลักในสูตร ถ้าเป็นเลขบวก เช่น =Round(1234.567,2) จะปัดหลักทศนิยมให้เป็นแค่ 2 หลัก จึงได้ค่าเป็น 1234.57 (เนื่องจากทศนิยมหลักที่ 3 เป็นเลข 7 ซึ่งมากกว่าหรือเท่ากับเลข 5 จึงปัดขึ้น)
จำนวนหลักในสูตร ถ้าเป็นเลข 0 เช่น =Round(1234.567,0) จะปัดหลักทศนิยมให้เป็นแค่ 0 หลัก จึงได้ค่าเป็น 1235.00 (เนื่องจากทศนิยมหลักที่ 1 เป็นเลข 5 ซึ่งมากกว่าหรือเท่ากับเลข 5 จึงปัดขึ้น)
จำนวนหลักในสูตร ถ้าเป็นเลขลบ เช่น =Round(1234.567,-2) จะปัดตัวเลขหลักหน่วยและสิบให้เป็นหลักร้อย จึงได้ค่าเป็น 1200.00 (เนื่องจากเลขหลักที่ 2 เป็นเลข 3 ซึ่งไม่มากกว่าหรือเท่ากับเลข 5 จึงตัดทิ้ง)
สูตร Trunc
สูตร Trunc ทำหน้าที่ตัดตัวเลขทั้งเลขหลักทศนิยมหรือเลขหลักอื่น ให้เหลือค่าเท่าจำนวนหลักที่ต้องการ โดยไม่ต้องดูว่าหลักถัดไปเป็นเลขใด
สูตร Trunc ย่อมาจากคำว่า Truncate แปลว่า ตัดทิ้ง
=Trunc( ตัวเลข, จำนวนหลัก)
จำนวนหลักในสูตร ถ้าเป็นเลขบวก เช่น =Trunc(1234.567,2) จะตัดหลักทศนิยมให้เป็นแค่ 2 หลัก จึงได้ค่าเป็น 1234.56
จำนวนหลักในสูตร ถ้าเป็นเลข 0 เช่น =Trunc(1234.567,0) หรือ =Trunc(1234.567) จะตัดดหลักทศนิยมให้เป็นแค่ 0 หลัก จึงได้ค่าเป็น 1234.00
จำนวนหลักในสูตร ถ้าเป็นเลขลบ เช่น =Round(1234.567,-2) จะตัดตัวเลขหลักหน่วยและสิบให้เป็นหลักร้อย จึงได้ค่าเป็น 1200.00
สูตร Int
สูตร Int ทำหน้าที่ตัดตัวเลขหลักทศนิยม ให้เหลือเป็นเลขจำนวนเต็มที่น้อยกว่าเลขเดิม
=Int( ตัวเลข)
=Int(1234.567) จะได้ผลลัพธ์ 1234
แต่ถ้าใช้สูตรหาจำนวนเต็มของค่าลบ =Int(-1234.567) จะได้ผลลัพธ์ -1235
สูตร Mod
สูตร Mod ย่อมาจากคำว่า Modulus แปลว่า เศษที่เหลือจากการหาร ดังนั้นสูตร Mod จึงทำหน้าที่หาเศษที่เหลือจากการหารกัน
=Mod( เลขตัวตั้ง, เลขตัวหาร)
=Mod(7,3) ได้ผลลัพธ์ 1
=Mod(7,4) ได้ผลลัพธ์ 3
=Mod(7,5) ได้ผลลัพธ์ 2
=Mod(1234.567,1) น่าจะได้ผลลัพธ์เฉพาะเศษ 0.567 แต่กลับได้ 0.567000000000007 มีส่วนท้ายเกินมา ซึ่งต้องอาศัยสูตร Round หรือ Trunc ช่วยแก้ไขอีกชั้นหนึ่ง
เมื่อใดที่ควรใช้สูตรก่อน Format
เมื่อเห็นสูตรข้างต้น หลายคนอาจบอกว่า ตนรู้จักสูตรเหล่านี้มานาน หรือใช้เป็นกันอยู่แล้ว และเห็นว่าเป็นสูตรง่ายๆ แต่ที่น่าคิดน่าถามตัวเองก็คือ แล้วตนเคยนำสูตร Round Trunc Int และ Mod มาใช้กันบ่อยมากน้อยแค่ไหน
ในงานสำคัญซึ่งต้องใช้ตัวเลขในการวางแผนตัดสินใจ เช่น งานบัญชี งานการเงิน งานภาษีอากร ตลอดจนงานอื่นๆซึ่งมีข้อจำกัดของตัวเลข ซึ่งเกิดจากข้อกำหนดจากภายนอกที่เราควบคุมไม่ได้ เช่น กฎเกณฑ์บัญชี กฎภาษีอากร หรือกฎทางการเงินที่ประกาศให้ลูกค้าและบุคคลภายนอกทราบ ในงานเหล่านี้จำเป็นต้องใช้สูตรดังกล่าวในทุกขั้นตอนของการคำนวณ ห้ามละไว้ใช้สูตรครั้งเดียวกับผลลัพธ์สุดท้าย เพราะจะทำให้ตัวเลขที่อยู่ระหว่างการคำนวณถูกตัดสินผิดพลาดจากกฎที่มีอยู่
ส่วนงานซึ่งใช้ตัวเลขเป็นการภายใน สามารถคลาดเคลื่อนได้บ้าง และไม่เกี่ยวข้องกับการตัดสินใจ เราไม่ต้องใช้สูตรเหล่านี้เลยก็ได้ แต่ต้องเป็นที่ทราบกันทั่วไปว่า ผลลัพธ์ที่เห็นอาจไม่ตรงกับค่าที่แท้จริงเสมอไป
ยังมีอีกสูตรหนึ่ง เป็นสูตรที่ 5 ซึ่งขาดไม่ได้ นั่นคือสูตร If จะนำมาเสนอแบบละเอียดในบทต่อไป แต่ If จะคำนวณได้ถูกต้องเสมอไปหรือไม่ ย่อมต้องอาศัยสูตร Round Trunc Int และ Mod เพื่อปรับค่าให้ถูกต้องก่อนที่จะนำ If มาช่วยตัดสินใจ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น