PDA

View Full Version : datedif นับจำนวนวันผิดพลาดในบางเดือน



Ninie
25 Apr 2011, 14:35
สวัสดีค่ะ...
ดิฉันใช้สูตร datedif ในการคำนวนหาวันล่าช้าเพื่อคิดอัตราดอกเบี้ย แต่พบปัญหาคือระยะห่างของจำนวนวัน ในบางเดือนผิดพลาดคือหายไป 1 วัน (ตัวอย่าง 5 บรรทัดสุดท้ายจากไฟล์แนบ) โดยหลักเกณฑ์การนับคือ : วันที่ชนวันที่นับเป็นหนึ่งเดือน เช่น
1 ก.พ. 54 - 1 มี.ค. 54 = 1 เดือน
1 ก.พ. 54 - 3 มี.ค. 54 = 1 เดือน, 2 วัน

รบกวนสอบถามท่านผู้รู้ช่วยชี้แนะด้วยนะคะ ... ขอบคุณมากค่ะ

excel_fever
25 Apr 2011, 15:01
อ่านจากลิงก์เดิมนะครับ
http://www.excelexperttraining.com/forums/showthread.php?t=4125&highlight=datedif
แล้วก็การบันทึกปี ให้บันทึกเป็น ค.ศ.

เอก
25 Apr 2011, 15:39
สวัสดีค่ะ...
ดิฉันใช้สูตร datedif ในการคำนวนหาวันล่าช้าเพื่อคิดอัตราดอกเบี้ย แต่พบปัญหาคือระยะห่างของจำนวนวัน ในบางเดือนผิดพลาดคือหายไป 1 วัน (ตัวอย่าง 5 บรรทัดสุดท้ายจากไฟล์แนบ) โดยหลักเกณฑ์การนับคือ : วันที่ชนวันที่นับเป็นหนึ่งเดือน เช่น
1 ก.พ. 54 - 1 มี.ค. 54 = 1 เดือน
1 ก.พ. 54 - 3 มี.ค. 54 = 1 เดือน, 2 วัน

รบกวนสอบถามท่านผู้รู้ช่วยชี้แนะด้วยนะคะ ... ขอบคุณมากค่ะ
เรื่องการคีย์ข้อมูลวันที่ใน Excel นี่ ถือเป็นปัญหาคลาสสิคมากๆ สำหรับผู้ใช้ในประเทศไทย (ปัญหาระดับประเทศจริงๆ :tongue:) จากการที่ตอบปัญหา Excel มาหลายปี เรื่องการคีย์วันที่(โดยนึกว่า)เป็นปี พ.ศ.นั้น เป็นปัญหาที่ถือว่ามีคนถามเยอะที่สุด

กรุณาอ่านเพิ่มเติม :-
1. เรื่อง "ข้อมูลประเภทวันที่และเวลา (Date - Time Format)"
http://it-for-hr.blogspot.com/2010/09/date-time-format.html

2. เรื่อง "การกำหนดรูปแบบเซลล์ประเภทวันที่ (Date Format)"
http://it-for-hr.blogspot.com/2010/05/date-format.html

Ninie
27 Apr 2011, 11:50
ตอนนี้ได้เปลี่ยนมาใช้ datediff และปีเป็น คศ.ตามคำแนะนำแล้ว ความถูกต้องมีเพิ่มขึ้นในบางเดือน แต่บางเดือนยังผิดอยู่ (ตามเอกสารแนบ) ตอนนี้ไม่ทราบสาเหตุจริงๆค่ะ รบกวนผู้รู้ช่วยแนะนำอีกครั้งด้วยค่ะ ... ขอบคุณค่ะ

เอก
27 Apr 2011, 12:18
ตอนนี้ได้เปลี่ยนมาใช้ datediff และปีเป็น คศ.ตามคำแนะนำแล้ว ความถูกต้องมีเพิ่มขึ้นในบางเดือน แต่บางเดือนยังผิดอยู่ (ตามเอกสารแนบ) ตอนนี้ไม่ทราบสาเหตุจริงๆค่ะ รบกวนผู้รู้ช่วยแนะนำอีกครั้งด้วยค่ะ ... ขอบคุณค่ะ
จากไฟล์แนบ ผมกลับเห็นว่า ใช้ DATEDIF แล้วได้ผลตรงกับที่คุณต้องการ แต่ถ้าใช้ DATEDIFF มันจะมีบางวันที่ไม่ตรง ผมก็เลยลองใช้คำนวณในหลายๆ ลักษณะ ซึ่งพอสรุปเป็นแนวทางได้ดังนี้
1. ถ้าหาอายุงาน (นับวันตั้งต้นด้วย) ใช้ DATEDIFF จะได้ผลถูกต้อง
2. ถ้าหาวันครบกำหนด (เริ่มนับจากวันถัดไป) ใช้ DATEDIF จะได้ผลถูกต้อง
ท่านอื่นลองทดสอบดูครับ ว่าได้ผลลัพธ์เหมือนผมมั๊ย

excel_fever
27 Apr 2011, 12:35
จากไฟล์แนบ ผมกลับเห็นว่า ใช้ DATEDIF แล้วได้ผลตรงกับที่คุณต้องการ แต่ถ้าใช้ DATEDIFF มันจะมีบางวันที่ไม่ตรง ผมก็เลยลองใช้คำนวณในหลายๆ ลักษณะ ซึ่งพอสรุปเป็นแนวทางได้ดังนี้
1. ถ้าหาอายุงาน (นับวันตั้งต้นด้วย) ใช้ DATEDIFF จะได้ผลถูกต้อง
2. ถ้าหาวันครบกำหนด (เริ่มนับจากวันถัดไป) ใช้ DATEDIF จะได้ผลถูกต้อง
ท่านอื่นลองทดสอบดูครับ ว่าได้ผลลัพธ์เหมือนผมมั๊ย
เหมือนกันครับ
กำลังจะหาคำอธิบายเกี่ยวกับการนับอยู่ คนนำไปใช้ต้องรู้เงื่อนไขว่างานนั้นต้องการ นับวันตั้งต้น หรือ เริ่มนับจากวันถัดไป

Ninie
27 Apr 2011, 12:46
ขอขอบคุณสำหรับคำแนะนำดีๆค่ะ แต่ขอรบกวนถามอาจารย์และผู้รู้เพิ่มนะคะ คือ

- หลักเกณฑ์การนับที่ดิฉันต้องการคือ ไม่นับวันเริ่มต้น แต่จะเริ่มนับในวันถัดไปและนับแบบวันที่ชนวันที่ ถือว่าเป็น 1 เดือน

- เช่น จากตัวอย่างไฟล์แนบรายการที่ 3 :
เริ่มวันที่ 17 พ.ค.06 - 5 ก.ค.06 = 17 พ.ค. ถึง 17 มิ.ย. = นับเป็น 1 เดือน
= 17 มิ.ย. ถึง 30 มิ.ย. = นับเป็น 13 วัน
= 30 มิ.ย. ถึง 5 ก.ค. = นับเป็น 5 วัน

สรุปว่าค่าที่ต้องการคือ 1 เดือน 18 วัน
แต่ค่าที่ได้จากสูตรที่ทดลองทั้ง 2 แบบ ไม่ตรงตามที่ต้องการค่ะ ดังนั้นควรทำอย่างไรดีคะ....

ขอบคุณมากค่ะ

สมเกียรติ
27 Apr 2011, 12:46
DateDif มีหลักการคำนวณโดยจะเอาวันไปชนวันก่อน เช่น จาก 30/1/2011 - 2/3/2011 จะตอบ 1 เดือน เพราะวันที่ 30 เดือน 2 ไม่มี จึงนับจากวันที่ 28/2 ไปอีก 2 วันให้ได้วันที่ 30/2 ซึ่งตรงกับวันที่ 2/3 พอดีครับ

จะว่าสูตรนี้ผิดก็ไม่ถูกนัก มันมีหลักคิดของมันเอง

เอก
27 Apr 2011, 12:54
ขอขอบคุณสำหรับคำแนะนำดีๆค่ะ แต่ขอรบกวนถามอาจารย์และผู้รู้เพิ่มนะคะ คือ

- หลักเกณฑ์การนับที่ดิฉันต้องการคือ ไม่นับวันเริ่มต้น แต่จะเริ่มนับในวันถัดไปและนับแบบวันที่ชนวันที่ ถือว่าเป็น 1 เดือน

- เช่น จากตัวอย่างไฟล์แนบรายการที่ 3 :
เริ่มวันที่ 17 พ.ค.06 - 5 ก.ค.06 = 17 พ.ค. ถึง 17 มิ.ย. = นับเป็น 1 เดือน
= 17 มิ.ย. ถึง 30 มิ.ย. = นับเป็น 13 วัน
= 30 มิ.ย. ถึง 5 ก.ค. = นับเป็น 5 วัน

สรุปว่าค่าที่ต้องการคือ 1 เดือน 18 วัน
แต่ค่าที่ได้จากสูตรที่ทดลองทั้ง 2 แบบ ไม่ตรงตามที่ต้องการค่ะ ดังนั้นควรทำอย่างไรดีคะ....

ขอบคุณมากค่ะ
ผมใช้สูตรนี้
D7 =IF(C7>B7,DATEDIF(B7,C7,"ym"),0) ได้ 1 เดือน
E7 =IF(C7>B7,DATEDIF(B7,C7,"md"),0) ได้ 18 วันครับ

Ninie
27 Apr 2011, 13:19
ผมใช้สูตรนี้
D7 =IF(C7>B7,DATEDIF(B7,C7,"ym"),0) ได้ 1 เดือน
E7 =IF(C7>B7,DATEDIF(B7,C7,"md"),0) ได้ 18 วันครับ

สูตรเดิมที่ใช้อยู่ก็เหมือนตามที่แนะนำนะคะ แต่ทำไมของดิฉันนับออกมาได้ 19 วัน ไม่ได้ 18 วัน...ดิฉันผิดพลาดตรงไหนคะ รบกวนชี้แนะอีกครั้งค่ะ

excel_fever
27 Apr 2011, 13:39
ตอนแรกที่เปิดไฟล์แนบแรกสุดคำตอบคือ 19 วัน
แต่พอกดปุ่ม Enable Editing
คำตอบเป็น 18 วัน
*ลองติดตั้งและถอนการติดตั้ง Add-ins DateDiff ผลยังเหมือนเดิมครับ
8549

เอก
27 Apr 2011, 14:30
ผมลองเปิดทั้ง 2003 และ 2010 ก็ได้จำนวนวัน 18 วันเท่ากันครับ

Ninie
27 Apr 2011, 15:58
ขอขอบคุณอาจารย์สมเกียรติ,คุณเอก และคุณ excel_fever มากนะคะ ที่เข้ามาช่วยตอบคำถามและให้คำแนะนำดีๆ กับดิฉันและผู้ที่สนใจให้ทราบโดยทั่วกัน

ขอบคุณมากค่ะ
Ninie