Soru İki Tarih Arasını Yüzde Olarak Verme

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Evet doğru hocam
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Ben bu kodlar ile resimdeki sonuçları alıyorum.

C++:
Private Sub TextBox22_Change()
    Dim Nesne As Control
    TextBox22.BackColor = vbGreen
    If TextBox22 = "" Then
        TextBox21 = ""
        TextBox23 = ""
        TextBox24 = ""
        TextBox1 = ""
        TextBox2 = ""
        TextBox3 = ""
        Label56.Caption = ""
        Label57.Caption = ""
    End If
    If Len(TextBox22) = 6 Then
        TextBox23.SetFocus
        If Not IsNumeric(Replace(Replace(Replace(TextBox22.Text, "(", ""), ")", ""), " ", "")) Then
            TextBox22.SetFocus
            TextBox22.SelStart = 0
            TextBox22.SelLength = Len(TextBox22.Text)
        End If
    
        Dim bul
        On Error Resume Next
        bul = Sheets("VERİ").Range("B2:B100000").Find(What:=TextBox22, LookIn:=xlValues, lookat:=xlWhole).Row
        TextBox21.Value = Sheets("VERİ").Cells(bul, 1).Value
        TextBox23.Value = Sheets("VERİ").Cells(bul, 3).Value
        TextBox24.Value = Sheets("VERİ").Cells(bul, 4).Value
        TextBox1.Text = Sheets("VERİ").Cells(bul, 5).Value
        TextBox2.Text = Sheets("VERİ").Cells(bul, 6).Value
        TextBox3.Text = Sheets("VERİ").Cells(bul, 7).Value
    
        If TextBox1 = "" Then
            MsgBox "Başlangıç boş!", vbCritical
        ElseIf TextBox2 = "" Then
            Label56.Caption = Format((CDate(Date) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        Else
            Label56.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(TextBox2)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(TextBox2)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(TextBox2)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        End If
    End If
End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Deneyiniz.

Ben bu kodlar ile resimdeki sonuçları alıyorum.

C++:
Private Sub TextBox22_Change()
    Dim Nesne As Control
    TextBox22.BackColor = vbGreen
    If TextBox22 = "" Then
        TextBox21 = ""
        TextBox23 = ""
        TextBox24 = ""
        TextBox1 = ""
        TextBox2 = ""
        TextBox3 = ""
        Label56.Caption = ""
        Label57.Caption = ""
    End If
    If Len(TextBox22) = 6 Then
        TextBox23.SetFocus
        If Not IsNumeric(Replace(Replace(Replace(TextBox22.Text, "(", ""), ")", ""), " ", "")) Then
            TextBox22.SetFocus
            TextBox22.SelStart = 0
            TextBox22.SelLength = Len(TextBox22.Text)
        End If
   
        Dim bul
        On Error Resume Next
        bul = Sheets("VERİ").Range("B2:B100000").Find(What:=TextBox22, LookIn:=xlValues, lookat:=xlWhole).Row
        TextBox21.Value = Sheets("VERİ").Cells(bul, 1).Value
        TextBox23.Value = Sheets("VERİ").Cells(bul, 3).Value
        TextBox24.Value = Sheets("VERİ").Cells(bul, 4).Value
        TextBox1.Text = Sheets("VERİ").Cells(bul, 5).Value
        TextBox2.Text = Sheets("VERİ").Cells(bul, 6).Value
        TextBox3.Text = Sheets("VERİ").Cells(bul, 7).Value
   
        If TextBox1 = "" Then
            MsgBox "Başlangıç boş!", vbCritical
        ElseIf TextBox2 = "" Then
            Label56.Caption = Format((CDate(Date) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        Else
            Label56.Caption = Format((CDate(TextBox2) - CDate(TextBox1)) / (TextBox3 * 365) * 100, "% 0.00")
            Yil = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""y"")")
            Ay = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""ym"")")
            Gun = Evaluate("=DATEDIF(" & CLng(CDate(TextBox1)) & "," & CLng(CDate(Date)) & ",""md"")")
            Label57.Caption = Yil & " Yıl " & Ay & " Ay " & Gun & " Gün"
        End If
    End If
End Sub
Hocam 7 numaralı kayıt 3 yıl 0 ay 0 gün olursa tam doğru oluyor mal3sef resimde 7 numaralı kayıt yüzde yüz iken geçen zmaan 2 yıl 1 ay 9 gün oluyor
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
O sonuca nasıl ulaşıyorsunuz? (7 numaralı kayıt için)

Ayrıca bir önce paylaştığınız dosyada 7 numaralı kayıt yoktu. Sonradan eklemişsiniz sanırım.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Evet 7 numaralı kayıdı yeni ekledim.
08.08.2018 yılı ile 07.08.2021 yılı tam 3 yıl ediyor yani yüzde yüz. O zaman 3 yıl 0 ay 0 gün yazması gerekmez mi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Excelin hesapladığı sonuç bu şekilde. Demek ki tam 3 yıl yapmıyor. (Artık gün olabilir.)
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam ama yüzde yüz gösteriyor. 3 yıl olarak.
Orda bir problem yokken yil ay gün olarak hesapalrken tüm kayıtlar hatalı oluyor ama
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
F8 hücresindei tarihi 08.08.2021 olarak düzeltirseniz aşağıdaki sonuç çıkacaktır.

3 Yıl 0 Ay 0 Gün

#22 nolu mesajımda ki kodu revize ettim. Tekrar deneyiniz.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Sayın @Korhan Ayhan Hocam

Labellere süreler %100 %40 %56 gibi geliyor hiç bir sorun yok
Ben Label 64de Label64= Label56 + Label60 + Label62 şeklinde toplam almak istiyorum.
Eğer label 56. 60. 62 den boş olan varsa onu 0 kabul ederek toplama yapacak .
Ama basında % ibaresi olduğundan boş labeller label62 diye geliyor ve toplama yapmıyor.
Yani Label64 de %100 Label56 %54 gibi geliyor
Kodu nasıl yazacağım konusunda yardım edebilir misiniz

Alıntı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Size tavsiyem proje uygulamalarına girişmeden önce en azından basit IF-END IF sorgularını öğrenmeniz olacaktır. Yoksa çok bocalarsınız.

Bunlarla ilgili olarak hem forumda hem de nette bolca örnekler var. Araştırma yapıp bilgilerinizi genişletmeniz gerekiyor.

Bahsettiğiniz (LABEL) nesneler genellikle metinsel verileri depolamak amacıyla kullanılır. Bu sebeple matematiksel işlemlerde sıkıntı yaşamanız normaldir.

Ama tabi ki bu durum aşılamaz değildr.

Aşağıdaki gibi bir kurgu işinize yarayabilir. Kendi nesnelerinize uyarlarsınız.

C++:
Private Sub CommandButton1_Click()
    If Label1.Caption = "" Then Label1.Caption = 0
    If Label2.Caption = "" Then Label2.Caption = 0
    If Label3.Caption = "" Then Label3.Caption = 0
    Label4.Caption = Format(CDbl(Replace(Label1.Caption, "%", "")) + CDbl(Replace(Label2.Caption, "%", "")) + CDbl(Replace(Label3.Caption, "%", "")), "% 0.00")
End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Size tavsiyem proje uygulamalarına girişmeden önce en azından basit IF-END IF sorgularını öğrenmeniz olacaktır. Yoksa çok bocalarsınız.

Bunlarla ilgili olarak hem forumda hem de nette bolca örnekler var. Araştırma yapıp bilgilerinizi genişletmeniz gerekiyor.

Bahsettiğiniz (LABEL) nesneler genellikle metinsel verileri depolamak amacıyla kullanılır. Bu sebeple matematiksel işlemlerde sıkıntı yaşamanız normaldir.

Ama tabi ki bu durum aşılamaz değildr.

Aşağıdaki gibi bir kurgu işinize yarayabilir. Kendi nesnelerinize uyarlarsınız.

C++:
Private Sub CommandButton1_Click()
    If Label1.Caption = "" Then Label1.Caption = 0
    If Label2.Caption = "" Then Label2.Caption = 0
    If Label3.Caption = "" Then Label3.Caption = 0
    Label4.Caption = Format(CDbl(Replace(Label1.Caption, "%", "")) + CDbl(Replace(Label2.Caption, "%", "")) + CDbl(Replace(Label3.Caption, "%", "")), "% 0.00")
End Sub

Kod:
Private Sub Topla_Click()
If Label56.Caption = "" Then Label56.Caption = 0
    If Label60.Caption = "" Then Label60.Caption = 0
    If Label62.Caption = "" Then Label62.Caption = 0
    Label64.Caption = Format(CDbl(Replace(Label56.Caption, "%", "")) + CDbl(Replace(Label60.Caption, "%", "")) + CDbl(Replace(Label62.Caption, "%", "")), "% 0.00")

End Sub
Hocam tüm Labeller dolu olunca Label64 de yüzde olarak gelirken bir veya daha fazla label boş olunca ekte ekran görüntüsündeki hata mesajını veriyor.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Hepsi boş bile olsa bile kod çalışacaktır.

Bence boş olma durumunu kontrol ediniz. Nesne boş ise hiçbir şey yazmaması gerekiyor.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hepsi boş bile olsa bile kod çalışacaktır.

Bence boş olma durumunu kontrol ediniz. Nesne boş ise hiçbir şey yazmaması gerekiyor.
Hocam yine deniyorum . Boş olunca Önceki mesajımdaki ekran görüntüsü hatasını veriyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Uyguladığınız dosyanızı paylaşınız.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Hocam bendeki userformu ekledim. tüm Labeller dolu olmayınca hata veriyor.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Label56 nesnesini kontrol ediniz. (BOŞ DEĞİL)

Diğerlerini de kontrol edin. Onlarda boş değil.

Boş demek üzerinde hiçbir şey yazmıyor olmasıdır.
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Label56 nesnesini kontrol ediniz. (BOŞ DEĞİL)

Diğerlerini de kontrol edin. Onlarda boş değil.

Boş demek üzerinde hiçbir şey yazmıyor olmasıdır.
Hocam Label 56 da hiç bir sey yazmıyor. Ben hala calistiramadim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,744
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Formu ekrana çağırdığınızda oluşan görüntüyü paylaşır mısınız?
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Korhan Hocam Label 62 yazıyormuş onu silince oldu. Çok teşekkür ederim. Emeğinize sağlık.
 
Üst