คิดจำนวนวันว่าเป็นกี่เดือน
กระทู้เก่าบอร์ด อ.Yeadram

 2,289   10
URL.หัวข้อ / URL
คิดจำนวนวันว่าเป็นกี่เดือน

ผมต้องใช้จำนวนเดือนในการคำนวน ผมเก็นค่าวันที่ซื้อมา และ วันที่คำนวน ไว้
ผมเอาวันที่คำนวนตั้ง-วันที่ซื้อมา ได้ค่าออกมาค่าหนึ่ง ผมเข้าใจว่า เป็นจำนวนวัน
แต่ผมอยากทราบว่ามันเป็น กี่เดือน ถ้าเอา 30 หาร กลัวว่าค่ามันจะหาย อยากทราบว่า มันมีฟังชั่นภายใน หรือ วิธีคำนวนมั้ยครับ ขอบคุณครับ

10 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R16494
DateDiff("m", #วันที่ 1#, #วันที่ 2#) ถ้าวันที่ 1 น้อยกว่า จะได้ค่าบวก ไม่เช่นนั้นจะได้ค่าลบ
2 @R16499
อาจารย์ครับ แล้วถ้าอยากได้เศษวันด้วยต้องทำไงครับ ผมอาจจะถามหยาบไป

ผมจะหาค่าเสื่อมราคา ปัญหาคือ ปีแรก และปีสุดท้าย ซึ่งมันไม่ครบปี
สมมุติพัสดุ 3 ชนิด
ชื่อพัสดุ วันที่ซื้อพัสดุ   วันที่คำนวน อายุการใช้งาน(เป็นปี) ราคา
     A        15/5/2556    30/9/2556                 3               3,000
     B          2/2/2555    30/9/2556                 2               2,500
     C        9/3/2552     30/9/2556                 4               8,000

A เพิ่ง ซื้อปีแรก ซื้อมาได้ 138 วัน หรือ 4 เดือน 17
B                      ซื้อมาได้ 606 วัน หรือ 1 ปี 8 เดือน 28 วัน
C                      ซื้อมาได้ 1,666 วัน หรือ 4 ปี 7 เดือน 23 วัน

ปีกลางๆ ผมก็เอาจำนวน ราคา/อายุการใช้งาน(ปี) ก็จะได้เป็นค่าเสื่อรายปี
ปัญหาคือ ปีแรก และปีสุดท้าย ที่ไม่ครบปี เลยต้องหาวิธี

ทีนี้ปัญหาก็คือ ตัวหารเป็นอายุการใช้งาน(ปี) เพราะฉนั้นเศษเดือนที่หามาได้ ต้องเป็นทศนิยม
(สงสัยผมถามผิด ต้องถามเป็นปี) เช่น 3 เดือน 18 วัน ค่าที่ออกมาได้ อาจเป็น 0.55(เลขสมมุติ)

ประมาณนี้ครับอาจารย์
3 @R16500
โจทย์ก็เหมือนกับการหาอายุคนใช่ไหม ลองค้นของเก่าด้วยคำว่า "อายุ" ดูนะครับ ถ้าจำไม่ผิด อ.Yeadram มีเขียนไว้ครับ
4 @R16501
คิดว่าใช้ ลบกันหาวัน หรือ DateDiff("d", ..., ...) ได้เลย แล้วหารด้วยจำนวนวันในปี
ทีนี้ กรณีนี้เป็นเรื่องบัญชี ลองถามเจ้าหน้าที่ให้ชัดเจนนะครับ เพราะทางบัญชี บางครั้งจะใช้ 360 วันแทนจำนวนวันจริง
5 @R16506
ขอบคุณ อ.สันติสุขครับ ช่วงรออาจารย์ตอบ ผมคิดไปมา ออกมาก็ประมาณที่ อ.พิชัย
แนะนำครับ คือ หาค่าวันเลย แล้วคูณวันที่ เหลือ แต่ก็ติดตรงจำนวนวันในปีอีก 365 หรือ 366
ก็ต้องเอามาใส่เงื่อนไข เลยคิดว่าเผื่อมันจะมี ฟังชั่นหรือวิธีคิด แต่ก็ตามไปดูรูปแบบที่
อ.yeadram มันก็เอามาใช้ได้ เสียดายที่ค่าของมันไม่ออกมาเป็นค่าเดียว จึงต้องปรับรูปแบบ
การคำนวนใหม่อีกครับ ขอบพระคุณอาจารย์ทั้ง 2 สำหรับวิธีและแนวคิดครับ
6 @R16513
ลองทำแล้ว วันมันหายไป ปีละวัน ค่าที่ได้ไม่ถูกต้อง ติดอยู่ที่ปีสุดท้าย

ชื่อพัสดุ วันที่ซื้อพัสดุ   วันที่คำนวน อายุการใช้งาน(เป็นปี)   คำนวนออกมาได้จำนวนวัน จำนวนวันที่ต้องใช้คำนวนปีสุดท้าย
     A        22/9/2553    30/9/2556                 3               1104                                    357
     B        8/10/2550    30/9/2556                 5               2184                                        8

สูตรที่ใช้ คำนวน => DateDiff("d",[วันที่ซื้อพัสดุ],[วันที่คำนวน])) Mod IIf(Year([วันที่คำนวน]) Mod 4=0,366,365)

พอได้ค่าที่คำนวนมา ผมก็เอา 365 มาลบอีกที ค่าที่ได้มัน ขาดหายไป วัน 2 วัน ตามจำนวนปี ดูแล้วน่าจะผิดที่ตัวสีแดง

แนวคิดคือผมน่าจะหาวันที่เหลือในปีสุดท้าย แต่นึกอยู่ ตั้งแต่เมื่อวาน คิดไม่ออก มันน่าจะประมาณไหนครับ
7 @R16516
ไม่แน่ใจ เป็นเพราะใช้ปีเป็น พ.ศ. หรือเปล่า เลย Mod 4 แล้วอาจไม่ถูกต้อง
8 @R16517
ไม่ได้ผิดที่ Mod 4 ครับ ผมทดสอบแล้ว
และตอนนี้ ทำได้แล้ว แต่ สูตร มันยาวมากเลยครับ ยาวเกิน ที่จะใส่ใน เงื่อนไข Query
กำลังหาวิธีอยู่ รู้สึกว่ามึนหัวมากเลย ตัวเลขมัน งง งง หลายชั้นเกิน
9 @R16518
IIf([ตรวจสอบถ้าเป็นปีแรก],True,IIf([ตรวจสอบว่าเป็นปีสุดท้าย],True,ค่าที่คำนวนได้ปกติ)

จะลองเขียนฟังชันดู ยังไม่รู้ว่าเขียนยังงัย
10 @R16527
นั่งไล่ Query ใหม่ เพิ่มทีละ ขั้นตอน ได้เรียบร้อยแล้วครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3062s