Çözüldü Excel 2010 Soyağacı Problemi 1800 lü Yıllar

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
7
Puanları
3
Yaş
39
Konum
Afyon
Ad Soyad
Mehmet İlhan
Herkese Merhaba.
Çok araştırmama rağmen EXCEL 2010 da 1800 lü ve daha öncesi yıllarla ilgili işlem yapılamadığını öğrendim. Sorun şudur: Soyağacı hazırlarken 1800 lü yıllarda doğmuş kişinin yaşını hesaplattırmak istiyorum. Fakat EXCEL efendi 1900 ve öncesini Metin olarak algılıyormuş.
Acaba MACRO lu falan bir çözüm yok mu?
Bu sorunla ilk ben mi karşılaşıyorum acaba.
ÖRN: 01.07.1850 de doğmuş dedemin dedesi 1940 da ölmüş ve ben "İki Tarih Arasındaki Farktan" kaç yaşında olduğunu otomatik olarak buldurmak istiyorum
 

Zeki Gürsoy

Uzman
Katılım
7 Haz 2018
Mesajlar
40
Puanları
18
Konum
Sakarya-Hendek
VBA date fonksiyonları 01.01.100 - 31.12.9999 tarihleri arasında işlem yapabilir. Ancak DateDiff fonksiyonu fark alırken biraz farklı davranır. Bu durumu aşağıdaki kullanıcı tanımlı fonksiyon ile aşabiliriz.

Kullanım (değer veya hücre adresi) : =ETARİH("01.07.1850";"01.07.1940";"y")

PHP:
Function ETARİH(KÜÇÜK_TARİH As Date, BÜYÜK_TARİH As Date, Interval As String)
    ' Zeki GÜRSOY - 12.03.2019 '
    
    fay = IIf(Day(KÜÇÜK_TARİH) > Day(BÜYÜK_TARİH), -1, 0)
    fyil = IIf(DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay - _
               DateDiff("yyyy", KÜÇÜK_TARİH, BÜYÜK_TARİH) * 12 < 0, -1, 0)
                              
    Select Case LCase(Interval)
        Case "y"
            ETARİH = DateDiff("yyyy", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fyil
        Case "m"
            ETARİH = DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay
        Case "d"
            ETARİH = DateDiff("d", KÜÇÜK_TARİH, BÜYÜK_TARİH)
        Case "yd"
            ETARİH = DateDiff("d", DateAdd("yyyy", _
                             DateDiff("yyyy", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fyil, _
                             KÜÇÜK_TARİH), BÜYÜK_TARİH)
        Case "md"
            ETARİH = DateDiff("d", DateAdd("m", _
                             DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay, _
                             KÜÇÜK_TARİH), BÜYÜK_TARİH)
        Case "ym"
            ETARİH = (DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay) Mod 12
    End Select
End Function
 

Arkadasca

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
83
Puanları
8
Yaş
47
Konum
İstanbul
Ad Soyad
HUZEYFE YAMAN
Zeki Bey,
Yazmış olduğunuz bu kodları nasıl kullanabiliriz?
Yukarıdaki kodları KTF Makrosu mudur?
 

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
7
Puanları
3
Yaş
39
Konum
Afyon
Ad Soyad
Mehmet İlhan
VBA date fonksiyonları 01.01.100 - 31.12.9999 tarihleri arasında işlem yapabilir. Ancak DateDiff fonksiyonu fark alırken biraz farklı davranır. Bu durumu aşağıdaki kullanıcı tanımlı fonksiyon ile aşabiliriz.

Kullanım (değer veya hücre adresi) : =ETARİH("01.07.1850";"01.07.1940";"y")

PHP:
Function ETARİH(KÜÇÜK_TARİH As Date, BÜYÜK_TARİH As Date, Interval As String)
    ' Zeki GÜRSOY - 12.03.2019 '
   
    fay = IIf(Day(KÜÇÜK_TARİH) > Day(BÜYÜK_TARİH), -1, 0)
    fyil = IIf(DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay - _
               DateDiff("yyyy", KÜÇÜK_TARİH, BÜYÜK_TARİH) * 12 < 0, -1, 0)
                             
    Select Case LCase(Interval)
        Case "y"
            ETARİH = DateDiff("yyyy", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fyil
        Case "m"
            ETARİH = DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay
        Case "d"
            ETARİH = DateDiff("d", KÜÇÜK_TARİH, BÜYÜK_TARİH)
        Case "yd"
            ETARİH = DateDiff("d", DateAdd("yyyy", _
                             DateDiff("yyyy", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fyil, _
                             KÜÇÜK_TARİH), BÜYÜK_TARİH)
        Case "md"
            ETARİH = DateDiff("d", DateAdd("m", _
                             DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay, _
                             KÜÇÜK_TARİH), BÜYÜK_TARİH)
        Case "ym"
            ETARİH = (DateDiff("m", KÜÇÜK_TARİH, BÜYÜK_TARİH) + fay) Mod 12
    End Select
End Function
 

Ekli dosyalar

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
7
Puanları
3
Yaş
39
Konum
Afyon
Ad Soyad
Mehmet İlhan
Tekrar Merhaba. Ben şimdi ekteki dosyada yazılı kişilerin ortalama yaşını bulmaya çalıştım. Taaki 1800 lü yıllarda doğan kişilerin girdisine kadar. Pembe en alttaki doğum tarihi sütununa ne yazmalıyım ki, excel beni tarihlerle uğraştırmasın.
Sizin gönderdiğiniz kodları bir makronun içine yerleştirdim, fakat bir türlü çalıştıramadım. Daha sade bir dille anlatabilir misiniz. Ben normalde 15-20 tane fonksiyonun bulunduğu bir excel tabloda çalışıyorum. Formüllerle aram iyi. Hatta makroda hazırlayabiliryorum. Bu bana biraz karışık geldi.
Lütfen örnek dosyada bu durumu izah edebilir misiniz.
Çok Teşekkürler.
 

Zeki Gürsoy

Uzman
Katılım
7 Haz 2018
Mesajlar
40
Puanları
18
Konum
Sakarya-Hendek
Gün sayısından yaşa ulaşmaya çalışmışsınız. Bu kullanım hatalı sonuçlar döndürebilir.
Dosyanızı ihtiyacınıza göre düzenleyerek ekledim. DateDiff isimli çalışma sayfası benim uyarladığım sayfadır.
Formülleri inceldiğinizde hesaplamayı anlayacaksınız sanıyorum.
 

Ekli dosyalar

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
7
Puanları
3
Yaş
39
Konum
Afyon
Ad Soyad
Mehmet İlhan
Şimdi oldu. Çok sağolun. Dedemin doğum gününü İstanbulun Fethi ile de özdeşleştirdiğiniz için ektradan teşekkür ederim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst Alt