• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

Çö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
30
En iyi yanıt
0
Puanları
8
Yaş
44
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
En iyi yanıt
0
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
 

Rahle

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
137
En iyi yanıt
0
Puanları
18
Yaş
51
Konum
İstanbul
Ad Soyad
Huzeyfe Yaman
Office Vers.
Office 2010
Zeki Bey,
Yazmış olduğunuz bu kodları nasıl kullanabiliriz?
Yukarıdaki kodları KTF Makrosu mudur?
 

Rahle

Yeni Üye
Katılım
20 Haz 2018
Mesajlar
137
En iyi yanıt
0
Puanları
18
Yaş
51
Konum
İstanbul
Ad Soyad
Huzeyfe Yaman
Office Vers.
Office 2010
Bilgi için teşekkür ederim.
 

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
30
En iyi yanıt
0
Puanları
8
Yaş
44
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

  • Kitap1.xlsb
    17 KB · Görüntüleme: 12

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
30
En iyi yanıt
0
Puanları
8
Yaş
44
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
En iyi yanıt
0
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

  • Yaş.xlsb
    18.3 KB · Görüntüleme: 27

hadiordan003

Yeni Üye
Katılım
12 Mar 2019
Mesajlar
30
En iyi yanıt
0
Puanları
8
Yaş
44
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