Page 1 of 1
การนับอายุตัว
Posted: Wed Mar 15, 2017 12:29 am
by george
สวัสดีครับ
การนับอายุตัว (ตั้งแต่วันเกิด นับจนถึง วันที่ปัจจุบัน) ปกติใช้ Function DATEDIF นับแยกเป็น ปี, เดือน, วัน ตามรูปแบบ Function แต่พอนับวันเองได้ผลลัพธ์คาดเคลื่อน 3 วัน จากการใช้ Function DATEDIF และอีกอย่างที่พบจากการนับวันเอง คือ วันที่มีเศษเป็น 31 จะปัดเป็น 1 เดือน หรือคงไว้ที่ 31 วัน
จึงขอคำแนะนำการนับอายุตัวที่ถูกต้อง แม่นยำ ต้องใช้วิธีการนับอายุอย่างไร และวิธีการปัดเศษวันที่ ตามตัวอย่างข้อมูล 8 รายการ ที่แนบมาครับ
ขอบคุณครับ
Re: การนับอายุตัว
Posted: Wed Mar 15, 2017 7:05 am
by DhitiBank
ลองแบบนี้ครับ
D4
=YEAR(C4)-YEAR(B4)-1+(DATEDIF(B4,DATE(YEAR(B4),12,31),"ym")+DATEDIF(DATE(YEAR(C4),1,1),C4,"ym")+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")>31)>12)
E4
=MOD(DATEDIF(B4,DATE(YEAR(B4),12,31),"ym")+DATEDIF(DATE(YEAR(C4),1,1),C4,"ym")+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")>31)-1,12)+1
F4
=MOD(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")-1,31)+1
แล้วคัดลอกสูตรทั้งหมดลงล่างครับ
Re: การนับอายุตัว
Posted: Wed Mar 15, 2017 2:35 pm
by george
หลังจากนำสูตรที่แนะนำใส่ตาราง EXCEL ลำดับที่ 1 ถึงลำดับที่ 12 ตามรูป มีข้อสงสัย ดังนี้
1. ลำดับที่ 1 ตารางรวมเวลา (สูตรผุ้รู้) ได้ 41 ปี 4 เดือน 31 วัน ถ้าจะปัดให้เต็มเดือนเป็น 41 ปี 5 เดือน 0 วัน ทำอย่างไร
2. ลำดับที่ 4 ตารางรวมเวลา (DateDIF) ได้ 39 ปี 0 เดือน 0 วัน ส่วนตารางรวมเวลา (สูตรผุ้รู้) ได้ 38 ปี 11 เดือน 31 วัน หากจะปัดเต็มเดือนทำอย่างไร
3. ลำดับที่ 5 ตารางรวมเวลา (DateDIF) ได้ 36 ปี 9 เดือน 0 วัน ส่วนตารางรวมเวลา (สูตรผุ้รู้) ได้ 36 ปี 11 เดือน 31 วัน หากจะปัดเต็มเดือนทำอย่างไร
4 ลำดับที่ 6, 7, 8 และ 9 ตารางรวมเวลา (DateDIF) ช่องวัน ตัวเลขต่างจากตารางรวมเวลา (นับมือ) และตารางรวมเวลา (สูตรผู้รู้) จำนวน 3 วัน เหตุผลเกิดจากอะไร และตัวเลขที่นับถูกต้องควรเท่าไรครับ
5. ลำดับ 10 ตารางรวมเวลา (DateDIF) กับตารางรวมเวลา (นับมือ) นับได้ 52 ปี 2 เดือน 14 วัน เหมือนกัน แต่ตารางรวมเวลา (สูตรผู้รู้) นับได้ 52 ปี 1 เดือน 14 วัน
6. ลำดับ 12 ตารางรวมเวลา (DateDIF) นับได้ 52 ปี 0 เดือน 6 วัน ตารางรวมเวลา (นับมือ) นับได้ 51 ปี 11 เดือน 37 วัน ตารางรวมเวลา (สูตรผู้รู้) นับได้ 51 ปี 12 เดือน 6 วัน ถ้าจะปัดครบ 12 เดือนให้เป็นปี จะปัดวันเกิน 30 วัน หรือ 31 วัน ให้เป็นเดือน ทำอย่างไร
ตามไฟล์แนบประกอบ
ขอบคุณครับครับ
Re: การนับอายุตัว
Posted: Wed Mar 15, 2017 10:58 pm
by DhitiBank
ขอตอบแบ่งเป็นข้อๆ นะครับ
1. ลำดับที่ 6, 7, 8 และ 9 เมื่อใช้ Datedif สูตรเดียวทำไมได้ผลลัพธ์แตกต่างจากสูตรด้านบน 3 วัน และที่ถูกควรได้เท่าไร
--- ทำไมถึงต่าง 3 วัน อันนี้ผมไม่แน่ใจครับ ขออภัยจริงๆ อาจเป็นเพราะการบวกด้วย 1 ในสูตรครับ
--- ตัวเลขที่ถูกต้องควรได้เท่าไร ผมขอตอบตามประสบการณ์นะครับว่าขึ้นอยู่กับวิธีนับที่บริษัทหรือหน่วยงานนั้นๆ ยอมรับหรือตกลงกันไว้แล้วครับ ผมเคยเห็นวิธีคำนวณอายุราชการ เงื่อนไขการนับก็ต่างจากโจทย์ของคุณ george มาก ดังนั้น ผมคิดว่าถ้าก่อนหน้านี้เคยนับด้วยมือและเพื่อนร่วมงานยอมรับตัวเลขนั้น ก็เอาวิธีคิดแบบนั้นมาเขียนสูตรเลยครับ ส่วนกรณีนี้ จากทีทำตัวอย่างมา คุณนับปีเต็มก่อนแล้วค่อยเอาเดือนกับวันเศษของปีเริ่มต้นกับปีสิ้นสุดมารวมกันใช่ไหมครับ
2. หากต้องการปัด 31 วันให้เป็น 1 เดือน และ 12 เดือนให้เป็น 1 ปี ปรับสูตรแบบนี้ครับ
M4
=YEAR(C4)-YEAR(B4)-1+(DATEDIF(B4,DATE(YEAR(B4),12,31),"ym")+DATEDIF(DATE(YEAR(C4),1,1),C4,"ym")+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")>30)>11)
N4
=MOD(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"ym")+DATEDIF(DATE(YEAR(C4),1,1),C4,"ym")+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")>30),12)
O4
=MOD(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md"),31)
Re: การนับอายุตัว
Posted: Fri Mar 17, 2017 12:47 am
by george
หลังจากใส่สูตรที่ปรับมาให้ใหม่ในตารางรวมเวลา (สูตรผุ้รู้) ลำดับที่ 1 - 12 ผลลัพธ์ตรงกับตารางรวมเวลา (DateDIF) และตารางรวมเวลา (นับมือ) จากนั้น เพิ่มข้อมูลลำดับที่ 13 - 18 ตามรูป ปรากฏว่า
1. ลำดับ 15 และ 16 ตารางรวมเวลา (สูตรผุ้รู้) ตารางรวมเวลา (DateDIF) และตารางรวมเวลา (นับมือ) ผลลัพธ์ตรงกัน
2. ลำดับที่ 13, 14, 17 และ 18 ผลลัพธ์ตารางรวมเวลา (สูตรผุ้รู้) ช่อง ปี หายไป 1 ปี ช่วยปรับสูตรให้ด้วยครับ
ตามไฟล์แนบประกอบ
ขอบคุณครับครับ
Re: การนับอายุตัว
Posted: Fri Mar 17, 2017 6:56 am
by DhitiBank
M4 ปรับสูตรเป็นแบบนี้ครับ
=YEAR(C4)-YEAR(B4)-1+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"m")+DATEDIF(DATE(YEAR(C4),1,1),C4,"m")+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")>30)>11)
Enter >> คัดลอกลงล่าง
เอ...ดูตัวเลขแล้ว ถ้าไม่ติดที่บางรายการต่างแค่ 3 วัน ผมว่าใช้ DATEDIF แบบเดิม (ทางซ้าย) ก็ดูง่ายดีนะครับ
Re: การนับอายุตัว
Posted: Thu Mar 30, 2017 11:32 am
by george
สูตรที่ปรับทดสอบกับข้อมูลใหม่ ลำดับที่ 19 - 22 ถ้านับถึง วันที่ในเดือน กุมภาพันธ์ ช่องเดือน ตารางรวมเวลา (สูตรผู้รู้) จะหายไป 1 เดือน เทียบกับการตารางรวมเวลา (นับมือ)
และลำดับที่ 23 ถ้านับถึงเดือนที่ลงท้ายด้วย "ยน" ช่องเดือน ตารางรวมเวลา (สูตรผู้รู้) จะหายไป 1 เดือน เทียบกับการตารางรวมเวลา (นับมือ) และช่องวัน ตารางรวมเวลา (สูตรผู้รู้) จะน้อยกว่า 2 วัน เทียบกับการตารางรวมเวลา (นับมือ)
ตามไฟล์แนบประกอบ
ขอบคุณครับครับ
Re: การนับอายุตัว
Posted: Thu Mar 30, 2017 3:44 pm
by menem
ไม่แน่ใจว่าไฟล์ที่ผมทำตรงกับที่ต้องการหรือไม่ ลองดูนะครับ
Re: การนับอายุตัว
Posted: Mon Apr 03, 2017 3:19 pm
by DhitiBank
หรือลองปรับสูตรแบบนี้ครับ
M4
=DATEDIF(B4,C4+1,"y")
N4
=MOD(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"ym")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"ym")+(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md")>30),12)
O4
=MOD(ROUND(DATEDIF(B4,DATE(YEAR(B4),12,31)+1,"md")+DATEDIF(DATE(YEAR(C4),1,1),C4+1,"md"),0),31)
ก็ยังมีต่างกัน 1-2 วันครับ