Verilen Tarihten Önceki ve Sonraki 13.Cuma'ları Döndüren Fonksiyonlar

Cevapla
Seyyar Diyari
Mesajlar: 11
Kayıt: 23 Eki 2020, 15:14
İşletim Sisteminiz: Ubuntu & Windows
LibreOffice Sürümü: 7.1.5.2

Verilen Tarihten Önceki ve Sonraki 13.Cuma'ları Döndüren Fonksiyonlar

Mesaj gönderen Seyyar Diyari »

Meraklısına...

Kod: Tümünü seç

Function artancuma(Optional tarih As Date, Optional ayinkaci As Integer, Optional haftagunu As Variant) As Date
	Dim testthis As Date
	If day(tarih) > 13 Then
		testthis = DateSerial(year(tarih), month(tarih), 13)
		testthis = ChangeMonth(testthis, 1)
	Else
		testthis = DateSerial(year(tarih), month(tarih), 13)
	End If
	Do Until weekday(testthis) = 6
		testthis = ChangeMonth(testthis, 1)
	Loop
	artancuma = testthis
End Function
Function azalancuma(Optional tarih As Date, Optional ayinkaci As Integer, Optional haftagunu As Variant) As Date
	Dim testthis As Date
	If day(tarih) < 13 Then tarih = ChangeMonth(tarih, -1)
	testthis = DateSerial(year(tarih), month(tarih), 13)
	Do Until weekday(testthis) = 6
		testthis = ChangeMonth(testthis, -1)
	Loop
	azalancuma = testthis
End Function
Function haftadagun(Optional gun As Variant) As Integer
End Function
Function ChangeMonth(Optional tarih As Date, Optional Job As Variant) As Date
	Dim newmonth, newyear As Integer
	If Job = -1 Then
		If month(tarih) > 1 Then
			newmonth = month(tarih) - 1
			newyear = year(tarih)
		Else
			newmonth = 12
			newyear = year(tarih) - 1
		End If
	Else
		If month(tarih) < 12 Then
			newmonth = month(tarih) + 1
			newyear = year(tarih)
		Else
			newmonth = 1
			newyear = year(tarih) + 1
		End If
	End If
	ChangeMonth = DateSerial(newyear, newmonth, day(tarih))
End Function
A sütununda tarihler olduğunu var sayalım.
B2 hücresine =ARTANCUMA(A2)
C2 hücresine =AZALANCUMA(A2)
yazarak B2 ve C2 hücresini yaydığımızda B sütununda A sütunundaki tarihlerden sonraki ilk 13. Cuma, C sütununda da A sütunundaki tarihlerden önceki ilk 13. Cuma tarihlerini döndürür.

LibreOffice Calc'te iki tarih arasındaki farkı aldığımız zaman GÜN biriminden sonucu döndürebiliyor. Bu fonksiyonlar muhtemelen Excel'de de olduğu haliyle kullanılabilir çünkü LibreOffice Calc'e özgü bir kod yok gibi.

BUGÜN() diye bir fonksiyon var mesela; günün tarihini döndürüyor. Kaç gün önce ya da sonra bir 13. Cuma olduğunu kolaylıkla döktürebilirsiniz.

Kaynak: https://github.com/metatronslove/cuma13 ... ice%20Calc
Cevapla