กระทู้เก่าบอร์ด อ.Yeadram
        
           1,329   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.0651s
    
      
		
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 บาทต่อวัน (โหดมากๆครับ)
ปล. หวังเป็นอย่างยิ่งว่าโจทย์นี้คุณคงตั้งมาเล่นๆ ไม่ได้ไปปล่อยเงินกู้ใครนะครับ สงสารคนกู้