กระทู้เก่าบอร์ด อ.Yeadram
2,346 10
URL.หัวข้อ /
URL
คิดจำนวนวันว่าเป็นกี่เดือน
ผมต้องใช้จำนวนเดือนในการคำนวน ผมเก็นค่าวันที่ซื้อมา และ วันที่คำนวน ไว้
ผมเอาวันที่คำนวนตั้ง-วันที่ซื้อมา ได้ค่าออกมาค่าหนึ่ง ผมเข้าใจว่า เป็นจำนวนวัน
แต่ผมอยากทราบว่ามันเป็น กี่เดือน ถ้าเอา 30 หาร กลัวว่าค่ามันจะหาย อยากทราบว่า มันมีฟังชั่นภายใน หรือ วิธีคำนวนมั้ยครับ ขอบคุณครับ
ผมเอาวันที่คำนวนตั้ง-วันที่ซื้อมา ได้ค่าออกมาค่าหนึ่ง ผมเข้าใจว่า เป็นจำนวนวัน
แต่ผมอยากทราบว่ามันเป็น กี่เดือน ถ้าเอา 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 ชนิด
ชื่อพัสดุ วันที่ซื้อพัสดุ วันที่คำนวน อายุการใช้งาน(เป็นปี) ราคา
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 วันแทนจำนวนวันจริง
ทีนี้ กรณีนี้เป็นเรื่องบัญชี ลองถามเจ้าหน้าที่ให้ชัดเจนนะครับ เพราะทางบัญชี บางครั้งจะใช้ 360 วันแทนจำนวนวันจริง
5 @R16506
ขอบคุณ อ.สันติสุขครับ ช่วงรออาจารย์ตอบ ผมคิดไปมา ออกมาก็ประมาณที่ อ.พิชัย
แนะนำครับ คือ หาค่าวันเลย แล้วคูณวันที่ เหลือ แต่ก็ติดตรงจำนวนวันในปีอีก 365 หรือ 366
ก็ต้องเอามาใส่เงื่อนไข เลยคิดว่าเผื่อมันจะมี ฟังชั่นหรือวิธีคิด แต่ก็ตามไปดูรูปแบบที่
อ.yeadram มันก็เอามาใช้ได้ เสียดายที่ค่าของมันไม่ออกมาเป็นค่าเดียว จึงต้องปรับรูปแบบ
การคำนวนใหม่อีกครับ ขอบพระคุณอาจารย์ทั้ง 2 สำหรับวิธีและแนวคิดครับ
แนะนำครับ คือ หาค่าวันเลย แล้วคูณวันที่ เหลือ แต่ก็ติดตรงจำนวนวันในปีอีก 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 วัน ตามจำนวนปี ดูแล้วน่าจะผิดที่ตัวสีแดง
แนวคิดคือผมน่าจะหาวันที่เหลือในปีสุดท้าย แต่นึกอยู่ ตั้งแต่เมื่อวาน คิดไม่ออก มันน่าจะประมาณไหนครับ
ชื่อพัสดุ วันที่ซื้อพัสดุ วันที่คำนวน อายุการใช้งาน(เป็นปี) คำนวนออกมาได้จำนวนวัน จำนวนวันที่ต้องใช้คำนวนปีสุดท้าย
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
กำลังหาวิธีอยู่ รู้สึกว่ามึนหัวมากเลย ตัวเลขมัน งง งง หลายชั้นเกิน
และตอนนี้ ทำได้แล้ว แต่ สูตร มันยาวมากเลยครับ ยาวเกิน ที่จะใส่ใน เงื่อนไข Query
กำลังหาวิธีอยู่ รู้สึกว่ามึนหัวมากเลย ตัวเลขมัน งง งง หลายชั้นเกิน
9 @R16518
IIf([ตรวจสอบถ้าเป็นปีแรก],True,IIf([ตรวจสอบว่าเป็นปีสุดท้าย],True,ค่าที่คำนวนได้ปกติ)
จะลองเขียนฟังชันดู ยังไม่รู้ว่าเขียนยังงัย
จะลองเขียนฟังชันดู ยังไม่รู้ว่าเขียนยังงัย
10 @R16527
นั่งไล่ Query ใหม่ เพิ่มทีละ ขั้นตอน ได้เรียบร้อยแล้วครับ
Time: 0.2633s