กระทู้เก่าบอร์ด อ.Yeadram
1,166 6
URL.หัวข้อ /
URL
มีวิธีใดบ้างครับให้เราคิดดอกเบี้ยรายวันได้
เรียนอาจารย์ทุกท่าน พอดีผมมีปัญหาอยากทราบว่า เรามีวิธีไหนบ้างครับให้เราหาดอกเบี้ยรายวันได้ จากสูตรที่ผมทำ
((([เงินต้น]*.09)*30)/365) หมายถึง เงินต้นคูณดอกเบี้ย คูณวันของเดือนนั้น ๆ หารด้วยจำนวนปี ของปีนั้นๆ
ปัญหามันคือ เมื่อเปลี่ยนเดือน หรือปี ซึ่งแต่ละเดือนและปีนั้น จะไม่เท่ากัน มีวิธีไหนบ้างครับที่ให้มันเปลี่ยนจำนวนวันของแต่ละเดือน และจำนวนปีของแต่ละปีแบบอัตโนมัติบ้างครับ
อีกอย่างหนึ่งครับ ถ้าสมุติมันหาดอกเบี้ย มาเป็นเศษทศนิยม ให้ปัดเศษขึ้นเป็นจำนวนเต็ม โดยไม่ให้ปัดเศษลง เช่น คำนวนได้ 9.10 ให้ปัดเป็น 10.00 เลย
ขอบคุณครับ
((([เงินต้น]*.09)*30)/365) หมายถึง เงินต้นคูณดอกเบี้ย คูณวันของเดือนนั้น ๆ หารด้วยจำนวนปี ของปีนั้นๆ
ปัญหามันคือ เมื่อเปลี่ยนเดือน หรือปี ซึ่งแต่ละเดือนและปีนั้น จะไม่เท่ากัน มีวิธีไหนบ้างครับที่ให้มันเปลี่ยนจำนวนวันของแต่ละเดือน และจำนวนปีของแต่ละปีแบบอัตโนมัติบ้างครับ
อีกอย่างหนึ่งครับ ถ้าสมุติมันหาดอกเบี้ย มาเป็นเศษทศนิยม ให้ปัดเศษขึ้นเป็นจำนวนเต็ม โดยไม่ให้ปัดเศษลง เช่น คำนวนได้ 9.10 ให้ปัดเป็น 10.00 เลย
ขอบคุณครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R20548
หาจำนวนวันของเดือนนั้นๆ
Function DaysInMonth(MyDate)
' This function takes a date as an argument and returns
' the total number of days in the month.
Dim NextMonth, EndOfMonth
NextMonth = DateAdd("m", 1, MyDate)
EndOfMonth = NextMonth - DatePart("d", NextMonth)
DaysInMonth = DatePart("d", EndOfMonth)
msgbox DaysInMonth
End Function
Credit : https://support.microsoft.com/en-us/kb/210448
หาจำนวนวันในปีนั้นๆ
Private Sub btnFindDayInYear_Click()
Dim dtMyDate As Date
dtMyDate = InputBox("Put your're date", "Cal day of year")
MsgBox DateDiff("d", "01/01/" & Year(dtMyDate), "31/12/" & Year(dtMyDate)) + 1
End Sub
Credit : http://www.w3schools.com/sql/func_datediff.asp
Function DaysInMonth(MyDate)
' This function takes a date as an argument and returns
' the total number of days in the month.
Dim NextMonth, EndOfMonth
NextMonth = DateAdd("m", 1, MyDate)
EndOfMonth = NextMonth - DatePart("d", NextMonth)
DaysInMonth = DatePart("d", EndOfMonth)
msgbox DaysInMonth
End Function
Credit : https://support.microsoft.com/en-us/kb/210448
หาจำนวนวันในปีนั้นๆ
Private Sub btnFindDayInYear_Click()
Dim dtMyDate As Date
dtMyDate = InputBox("Put your're date", "Cal day of year")
MsgBox DateDiff("d", "01/01/" & Year(dtMyDate), "31/12/" & Year(dtMyDate)) + 1
End Sub
Credit : http://www.w3schools.com/sql/func_datediff.asp
3 @R20549
ของอาจารย์ TTT ง่ายกว่าเยอะครับ
4 @R20550
ขอรบกวนอาจารย์ TTT อีกครั้งน่ะครับ ถ้าผมต้องการนำสูตรเข้าไปใส่ในแบบ สอบถาม และในฟอร์ม จะนำไปใส่อย่างไงได้บ้างครับ
ปล.ดอกไม่ได้โหดครับ
ถ้าเงินต้น 100 บาท ดอกเบี้ยคิดเป็น 1 บาทต่อเดือนครับ (แก้ข่าว)
ขอบคุณครับ
ขอรบกวนอาจารย์ TTT อีกครั้งน่ะครับ ถ้าผมต้องการนำสูตรเข้าไปใส่ในแบบ สอบถาม และในฟอร์ม จะนำไปใส่อย่างไงได้บ้างครับ
ปล.ดอกไม่ได้โหดครับ
ถ้าเงินต้น 100 บาท ดอกเบี้ยคิดเป็น 1 บาทต่อเดือนครับ (แก้ข่าว)
ขอบคุณครับ
5 @R20551
D1: -Int(-(([M_Emer] * 0.09) * (Day(DateSerial(Year([ฟิลด์วันที่]), Month([ฟิลด์วันที่]) + 1, 0)))) / (IIf(Month(DateSerial(Year([ฟิลด์วันที่]), 2, 29)) = 2, 366, 365)))
ประมาณนี้ครับ
ประมาณนี้ครับ
6 @R20553
ขอบคุณ อาจารย์ TTT มากครับ ทำได้แล้วครับ
และอาจารย์ TIDE ที่ให้ความรู้
ขอบคุณอาจารย์ทั้งสองอีกครั้งน่ะครับ ที่ให้ความรู้ใหม่ ๆ เพิ่มเติมสำหรับผม และคนอื่น ๆ ที่ยังไม่ทราบ
ขอบคุณครับ
และอาจารย์ TIDE ที่ให้ความรู้
ขอบคุณอาจารย์ทั้งสองอีกครั้งน่ะครับ ที่ให้ความรู้ใหม่ ๆ เพิ่มเติมสำหรับผม และคนอื่น ๆ ที่ยังไม่ทราบ
ขอบคุณครับ
Time: 0.5501s
1. ถ้าคุณต้องการหาจำนวนวันของเดือนเป้าหมายใช้ฟังก์ชั่น DateSerial()
Day(DateSerial(Year(วันที่เป้าหมาย), Month(วันที่เป้าหมาย) + 1, 0))
2. ถ้าคุณต้องการหาจำนวนวันของปีเป้าหมาย ว่าเป็นปีอธิกสุรทิน Leap Year คือมี 366 วันหรือไม่ ก็สามารถใช้ฟังก์ชั่น DateSerial() เช่นกัน
Month(DateSerial(Year(วันที่เป้าหมาย), 2, 29)) = 2
โดยก็จะประมาณว่าตรวจสอบดูว่าเดือนสองของปีนั้นมีวันที่ 29 หรือไม่ ถ้ามีก็เป็นปีอธิกสุรทิน ซึ่งจริงๆแล้วปีอธิกสุรทิน มาจากเงื่อนไขคือ
1. ปีคริสตศักราชใด หารด้วย 4 แล้วลงตัวคือไม่มีเศษ และ หารด้วย 100 แล้วไม่ลงตัวคือมีเศษ ถือเป็นปีอธิกสุรทิน
2. ปีคริสตศักราชที่หารด้วย 400 แล้วลงตัวคือไม่มีเศษ ถือเป็นปีอธิกสุรทิน
เราจึงสามารถเขียนสูตรเงื่อนไขได้ดังนี้
(ปี ค.ศ. Mod 4 = 0 And ปี ค.ศ. Mod 100 > 0) Or (ปี ค.ศ. Mod 400 = 0)
จะใช้แบบนี้หรือ
Month(DateSerial(Year(วันที่เป้าหมาย), 2, 29)) = 2
ก็ได้ครับ
ในตัวอย่างนี้เราใช้แบบ Month(DateSerial(Year(วันที่เป้าหมาย), 2, 29)) = 2
เขียนโค๊ดได้ประมาณนี้ครับ
สมมุติ ณ วันที่ปัจจุบัน เงินต้น 100 บาท
Dim iDate As Date
Dim iMonth As Integer
Dim LeapYear As Integer
iDate = Date ' วันที่ปัจจุบัน
iMonth = Day(DateSerial(Year(iDate), Month(iDate) + 1, 0)) ' จำนวนวันในเดือนเป้าหมาย
LeapYear = IIf(Month(DateSerial(Year(iDate), 2, 29)) = 2, 366, 365) ' จำนวนวันในปีเป้าหมาย
MsgBox -Int(-((100 * 0.09) * iMonth) / LeapYear) ' เงินต้น 100 บาท
1
แสดงว่าถ้าเงินต้น 100 บาท ดอกเบี้ยคิดเป็น 1 บาทต่อวัน (โหดมากๆครับ)
ปล. หวังเป็นอย่างยิ่งว่าโจทย์นี้คุณคงตั้งมาเล่นๆ ไม่ได้ไปปล่อยเงินกู้ใครนะครับ สงสารคนกู้