EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Mod เป็นการหาเศษจากการหารเป็นจำนวนเท่า ซึ่งจำนวนเท่าต้องเป็นจำนวนเต็ม ตัวที่หารลงตัวจะเป็น 0 เสมอ หากว่าหารไม่ลงตัวในลักษณะจำนวนเต็ม ส่วนที่เหลือจากการหารลงตัวคือเศษจากการหาร จากกรณีนี้ Mod(1,2) ไม่ถือเป็นการหารลงตัว คำตอบ 0.5 (0.5 เท่า) โดยไม่มีทศนิยมต่อท้ายไม่เรียกว่าหารลงตัวสำหรับ Mod ครับ จากกรณีนี้ผลลัพธ์จะต้องได้ 1 โดย Mod(1,10) ผลลัพธ์คือ 1 เช่นกันpalerpater wrote:1. MOD หาเศษของผลหารให้ผลไม่ถูกต้องเสมอไปใช่มั๊ยครับ mod(1,2) return ค่า 1 ซึ่งจริงๆ แล้ว ผลของการหาร 1/2 มีค่า 0.5 ดังนั้นเศษจึงต้องมีค่าเป็น 0.5 แต่สูตร return ค่า 1 มาให้
กรณีนี้ก็เช่นเดียวกันกับวรรคบน Mod(1*2,2*2) คือ Mod(2,4) เลข 2 หารไม่ลงตัวในลักษณะจำนวนเท่าของ 4 เศษจากการหารจึงเป็น 2palerpater wrote:ซึ่งเมื่อผมลองแกล้งทดลอง excel โดยเอาสองมาคูณทั้งตัวตั้งและตัวหาร คือให้หาค่า mod(1*2,2*2) ซึ่งมันควรจะ return ค่าเหมือน mod(1,2) แต่ผลกลับเป็นว่ามัน return ค่า 2 มาให้แทน ซึ่งก็ยังผิดอยู่เหมือนเดิม
ปกติการใช้ Mod ตัว Divisor หรือตัวหารจะเป็นจำนวนเต็ม หากเป็นทศนิยมคำตอบที่ได้อาจจะไม่ตรงกับที่ต้องการ ทั้งนี้เนื่องจากโปรแกรมมีการแปลงค่าที่เราคีย์ซึ่งเป็นเลขฐาน 10 ให้เป็นเลขฐาน 2 แล้วนำไปคำนวณ จาก =MOD(13536,9.4) คำตอบคือ 9.39999999999949 ไม่ได้เป็นจำนวนเท่าของ 9.4 ดูตัวอย่างปัญหานี้ในกรณีอื่น ๆ ได้ที่ wordpress/difference-form-calculation/ สำหรับการ Mod ที่มี Divisor เป็นทศนิยมให้ใช้รูปแบบ Int (n - d*INT(n/d)) แทนครับpalerpater wrote:2. MOD ที่ใช้ใน excel version 2013 กับ 2007 หรือต่ำกว่า 2007 ก็ดัน return ค่ามาให้ไม่เท่ากัน
2013: mod(13536,9.4) = 9.4 ซึ่งจริงๆ แล้ว 13536/9.4 = 1440 ดังนั้นมันควรตอบ 0
2007: mod(13536,9.4) = 1.3074E-12 ดันไม่เป๊ะอีก ถ้าใส่สูตรเทียบค่าว่าเท่ากับ 0 หรือไม่ มันก็ตอบผิดอีก