• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru tarih işlemi

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,543
Excel Vers. ve Dili
2021 LTSC TR
G8 Hücresi : 0 Yıl 2 Ay 0 Gün
G9 Hücresi : 0 Yıl 4 Ay 16 Gün
G10 Hücresi : 0 Yıl 4 Ay 0 Gün
G11 Hücresi : 0 Yıl 8 Ay 26 Gün
G12 Hücresi : 0 Yıl 8 Ay 25 Gün
G13 Hücresi : TOPLAM YIL AY GÜN

Toplama formülü ya da makrosu her ikisi de olur. Rica etsem yardımcı olabilir misiniz?
 
Merhaba,

Kullanıcı Tanımlı Fonksiyon Hazırladım.
Aşağıdaki kodları bir modüle kopyalayınız.
Kullanımı : =HizmetTopla(A1:A10) gibidir.
Kod:
Public Function HizmetTopla(Rng As Range)

    Dim Yil As Integer, _
        Ay  As Integer, _
        Gun As Integer, _
        d   As Variant, _
        Hcr As Range, _
        h   As String
    
    For Each Hcr In Rng
    
        h = Trim(Replace(Replace(Replace(Hcr, " Yıl", ""), " Ay", ""), " Gün", ""))
        d = Split(h, " ")
        Yil = Yil + d(0)
        Ay = Ay + d(1)
        Gun = Gun + d(2)
        
        If Gun > 30 Then
            Ay = Ay + 1
            Gun = Gun - 30
        End If
        If Ay > 12 Then
            Yil = Yil + 1
            Ay = Ay - 12
        End If
        
    Next Hcr
    
    HizmetTopla = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
    
End Function
 
İdris Hocam Sitenizde ki hemen hemen tüm tarih dosyanızı indirdim. Ama beceremedim.
Necdet Hocam Eline koluna sağlık. Sağ ol, Var ol Çok çok teşekkür ederim.
Tamer42 hocam Kurum internet engelinden dolayı download edemedim. Rica etsem özel gönderdiğim adrese e-mail gönderebilir misiniz?
 
.

Eğer sizin verilerde yer alan:
G8 Hücresi : 0 Yıl 2 Ay 0 Gün
G9 Hücresi : 0 Yıl 4 Ay 16 Gün
G10 Hücresi : 0 Yıl 4 Ay 0 Gün
G11 Hücresi : 0 Yıl 8 Ay 26 Gün
G12 Hücresi : 0 Yıl 8 Ay 25 Gün

sonuçlar, formüllerin sonuçları ise, bunların başlangıç ve bitiş tarihleri muhakkak vardır. O zaman benim dosya işinize yarar. Değilse, yaramaz.

.
 
Formül Dizi formülü ctrl+Shift+ enter ile formülden çıkınız.G13 hücresine kopyalayınız.
Kod:
=TOPLA(EĞERHATA(0+PARÇAAL(G8:G12;BUL("Yıl ";$A126:$A130)-3;2);0))+TAMSAYI((TOPLA(EĞERHATA(0+PARÇAAL(G8:G12;BUL("Ay ";G8:G12)-3;2);0))+TAMSAYI(TOPLA(EĞERHATA(0+PARÇAAL(G8:G12;BUL("Gün";G8:G13)-3;2);0))/30))/12)&" Yıl "&MOD((TOPLA(EĞERHATA(0+PARÇAAL($A126:$A130;BUL("Ay ";G8:G12)-3;2);0))+TAMSAYI(TOPLA(EĞERHATA(0+PARÇAAL(G8:G12;BUL("Gün";G8:G12)-3;2);0))/30));12)&" Ay "&MOD(TOPLA(EĞERHATA(0+PARÇAAL(G8:G12;BUL("Gün";G8:G12)-3;2);0));30)&" Gün"
 
Public Function HizmetTopla(Rng As Range)
Dim Yil As Integer, _
Ay As Integer, _
Gun As Integer, _
d As Variant, _
Hcr As Range, _
h As String
For Each Hcr In Rng
h = Trim(Replace(Replace(Replace(Hcr, " Yıl", ""), " Ay", ""), " Gün", ""))
d = Split(h, " ")
Yil = Yil + d(0)
Ay = Ay + d(1)
Gun = Gun + d(2)
If Gun > 30 Then
Ay = Ay + 1
Gun = Gun - 30
End If
If Ay > 12 Then
Yil = Yil + 1
Ay = Ay - 12
End If
Next Hcr
HizmetTopla = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
End Function


Necdet Abi
Bu toplamanın çıkarması da mümkün müdür?
Ekleyebilir misiniz?
 
Necdet Abi
Bu toplamanın çıkarması da mümkün müdür?
Ekleyebilir misiniz?

Merhaba,

Çıkarmaya bir örnek verir misiniz?
Sonradan uzun yazışmalara gerek kalmaması için sordum.
Bir süreden sonraki süreler mi çıkacak, yoksa tekli mi olacak ?
 
Necdet Abi
8 Yıl 5 Ay 0 Gün
3 Yıl 0 Ay 0 Gün
8 Yıl 1 Ay 0 Gün
+-------------------
19 Yıl 6 Ay 0 Gün (2 Ay Fazla Veriyor Necdet Abi)


0 Yıl 2 Ay 0 Gün
0 Yıl 4 Ay 16 Gün
0 Yıl 4 Ay 0 Gün
0 Yıl 8 Ay 26 Gün
0 Yıl 8 Ay 25 Gün
+--------------------
2 Yıl 4 Ay 7 Gün (2 Ay Fazla Veriyor Necdet Abi)

Tarih çıkarma
19 Yıl 6 Ay 0 Gün
2 Yıl 4 Ay 7 Gün
- ------------------
 
Merhaba,

Tam tarih toplamlarında 2 ay fazla veriyor demişsiniz, inceledim öyle bir şeye denk gelmedim. Siz emin misiniz? Eminseniz verileri ve sonucu söyleyiniz. Ayrıca ben günü 30 gün olarak kabul ettim.

Fark için aşağıdaki kodları deneyiniz.

Kullanımı :

Kod:
= HizmetFark(A1;D1)
gibi, ilk tarihten ikincisini çıkartır.

Kod:
Function HizmetFark(Rng1 As Range, Rng2 As Range)

    Dim Y1  As Integer, _
        A1  As Integer, _
        G1  As Integer, _
        Y2  As Integer, _
        A2  As Integer, _
        G2  As Integer, _
        d1  As Variant, _
        d2  As Variant, _
        t   As String
    
        t = Trim(Replace(Replace(Replace(Rng1, " Yıl", ""), " Ay", ""), " Gün", ""))
        d1 = Split(t, " ")
        t = Trim(Replace(Replace(Replace(Rng2, " Yıl", ""), " Ay", ""), " Gün", ""))
        d2 = Split(t, " ")
        
        Y1 = d1(0): A1 = d1(1): G1 = d1(2)
        Y2 = d2(0): A2 = d2(1): G2 = d2(2)
        
        If G2 > G1 Then
            A1 = A1 - 1
            G1 = G1 + 30
        End If
        
        If A2 > A1 Then
            Y1 = Y1 - 1
            A1 = A1 + 12
        End If
        
            
    HizmetFark = "Fark : " & Y1 - Y2 & " Yıl " & A1 - A2 & " Ay " & G1 - G2 & " Gün"
  
End Function
 
Son düzenleme:
Necdet Abi
Hakkını helal et
Ellerine sağlık. Çok çok teşekkür ederim.
 
Güle güle kullanınız.
 
Geri
Üst