mars2
Altın Üye
- Katılım
- 2 Eylül 2004
- Mesajlar
- 568
- Excel Vers. ve Dili
-
2016 - Türkçe
2019 - Türkçe
- Altın Üyelik Bitiş Tarihi
- 26-03-2026
İyi Günler;
Aşağıdaki makro ile iki tarih arasındaki yıl ay ve günü bulunmakta, ancak bu iki tarih arasındaki, toplam gün sayısını veren makroya ihtiacım bulunmaktadır.
Örnek
B C D
01.01.2024 31.12.2024 365
Function tarihfarki(KüçükTarih As Date, BüyükTarih As Date) As String
Dim years, months, days, m
years = Year(BüyükTarih) - Year(KüçükTarih)
If Month(KüçükTarih) > Month(BüyükTarih) Then
years = years - 1
End If
If Month(BüyükTarih) < Month(KüçükTarih) Then
months = 12 - Month(KüçükTarih) + Month(BüyükTarih)
Else
months = Month(BüyükTarih) - Month(KüçükTarih)
End If
If Day(BüyükTarih) < Day(KüçükTarih) Then
months = months - 1
If Month(BüyükTarih) = Month(KüçükTarih) Then
years = years - 1
months = 11
End If
End If
days = Day(BüyükTarih) - Day(KüçükTarih)
If days < 0 Then
m = CInt(Month(BüyükTarih)) - 1
If m = 0 Then m = 12
Select Case m
Case 1, 3, 5, 7, 8, 10, 12
days = 31 + days
Case 4, 6, 9, 11
days = 30 + days
Case 2
If (Year(BüyükTarih) Mod 4 = 0 And Year(BüyükTarih) _
Mod 100 <> 0) Or Year(BüyükTarih) Mod 400 = 0 Then
days = 29 + days
Else
days = 28 + days
End If
End Select
End If
tarihfarki = CStr(years) + " Yıl " + CStr(months) _
+ " Ay " + CStr(days) + " Gün "
End Function
Aşağıdaki makro ile iki tarih arasındaki yıl ay ve günü bulunmakta, ancak bu iki tarih arasındaki, toplam gün sayısını veren makroya ihtiacım bulunmaktadır.
Örnek
B C D
01.01.2024 31.12.2024 365
Function tarihfarki(KüçükTarih As Date, BüyükTarih As Date) As String
Dim years, months, days, m
years = Year(BüyükTarih) - Year(KüçükTarih)
If Month(KüçükTarih) > Month(BüyükTarih) Then
years = years - 1
End If
If Month(BüyükTarih) < Month(KüçükTarih) Then
months = 12 - Month(KüçükTarih) + Month(BüyükTarih)
Else
months = Month(BüyükTarih) - Month(KüçükTarih)
End If
If Day(BüyükTarih) < Day(KüçükTarih) Then
months = months - 1
If Month(BüyükTarih) = Month(KüçükTarih) Then
years = years - 1
months = 11
End If
End If
days = Day(BüyükTarih) - Day(KüçükTarih)
If days < 0 Then
m = CInt(Month(BüyükTarih)) - 1
If m = 0 Then m = 12
Select Case m
Case 1, 3, 5, 7, 8, 10, 12
days = 31 + days
Case 4, 6, 9, 11
days = 30 + days
Case 2
If (Year(BüyükTarih) Mod 4 = 0 And Year(BüyükTarih) _
Mod 100 <> 0) Or Year(BüyükTarih) Mod 400 = 0 Then
days = 29 + days
Else
days = 28 + days
End If
End Select
End If
tarihfarki = CStr(years) + " Yıl " + CStr(months) _
+ " Ay " + CStr(days) + " Gün "
End Function