Hücredeki saat formatlı toplam saat verisini değişkene atamak

Katılım
11 Aralık 2014
Mesajlar
27
Excel Vers. ve Dili
Microsoft Office 2021 64 bit Türkçe
Arkadaşlar merhaba bir sutunda bulunan saat formatlı hücrelerdeki saat verilerinin toplamını (örnek: 26:15 olarak veya 30:20 şeklinde) topladıktan sonra VBA'da Dim SaatBul As Date değişkenine atıyorum. Fakat saat toplamı 24 saatten büyük ise 24 saati düşüp geri kalan saatleri gösteriyor. Hücredeki 24 saatten büyük saat toplamını saat ve dakika olarak değişkene aldırmak için nasıl bir yöntem kullanacağımı bulamadım yardım edebilirseniz sevinirim teşekkür ederim.
 
Katılım
11 Aralık 2014
Mesajlar
27
Excel Vers. ve Dili
Microsoft Office 2021 64 bit Türkçe
Çok teşekkür ederim Sayın Soft hocam şimdi deneme imkanım yok denediğim de size bilgi vereceğim.
 
Katılım
11 Aralık 2014
Mesajlar
27
Excel Vers. ve Dili
Microsoft Office 2021 64 bit Türkçe
Kod:
Sub SaatToplam()
    Dim toplamSaat As Long
    Dim toplamDakika As Long
    Dim saatStr As String
    Dim dakikaStr As String
    Dim saatBul As Date
   
    ' Saatleri ve dakikaları ayrı değişkenlere ayırma
    toplamSaat = Hour(SaatBul)
    toplamDakika = Minute(SaatBul)
   
    ' Toplam saatlerin 24 saatten büyük olması durumunda düzeltilmesi
    If toplamSaat >= 24 Then
        toplamSaat = toplamSaat - 24
    End If
   
    ' Saat ve dakikaları stringe çevirme (gerekirse önce sıfırlar eklenir)
    If Len(CStr(toplamSaat)) = 1 Then
        saatStr = "0" & CStr(toplamSaat)
    Else
        saatStr = CStr(toplamSaat)
    End If
   
    If Len(CStr(toplamDakika)) = 1 Then
        dakikaStr = "0" & CStr(toplamDakika)
    Else
        dakikaStr = CStr(toplamDakika)
    End If
   
    ' Saat ve dakika stringlerini birleştirme
    SaatBul = TimeValue(saatStr & ":" & dakikaStr)
End Sub
Sayın Soft hocam değerli zamanınızı ayırdığınız için çok teşekkür ederim. Kusura bakmayın yeni deneme fırsatı buldum. Yazmış olduğunuz kodlar istediğim sonucu vermedi. Hücrede yazılı olan saat formatlı veriyi 24 saati düştükten sonra ki sonucu veriyor. Deneme yaptığım esnada hücredeki saat 46:30 bu kodları çalıştırdığımda sonuç 22:30 olarak geliyor. 24 saati yani bir günü düşüyor. Benim istediğim hücrede yazılı saat neyse onu sonuç olarak vermesi yani SaatBul değişkeninin sonucu 46:30 olarak vermesi sonrasında Hour ile saati almaktır.
Not: Saat toplamlarını Topla(A1:A50) formülü ile [ss]:dd biçimiyle A51 hücresine toplatıyorum.
 
Katılım
15 Mart 2005
Mesajlar
354
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Merhaba,

Eğer yukarıdaki kodu kullanacaksanız;

C++:
If toplamSaat >= 24 Then
        toplamSaat = toplamSaat - 24
End If
satırını koddan çıkarın ve hücre formatını "[ s]:dd" yapın.
 

Korhan Ayhan

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

Alternatif olarak ekteki gibi olabilir...



251596
 
Katılım
11 Aralık 2014
Mesajlar
27
Excel Vers. ve Dili
Microsoft Office 2021 64 bit Türkçe
Merhaba,

Eğer yukarıdaki kodu kullanacaksanız;

C++:
If toplamSaat >= 24 Then
        toplamSaat = toplamSaat - 24
End If
satırını koddan çıkarın ve hücre formatını "[ s]:dd" yapın.
Teşekkür ederim dost hocam istediğim sonucu vermedi. Ya da ben uyarlayamadım.
 
Katılım
11 Aralık 2014
Mesajlar
27
Excel Vers. ve Dili
Microsoft Office 2021 64 bit Türkçe

Korhan Ayhan

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

C++:
Sub Saatler()

    'Kullandığım Excel "Microsoft Excel 2021"
    
    Dim SaatBul As Date
    Dim Saat, Dakika, Gun As Integer
    
    SaatBul = Worksheets("Saatler").Cells(11, "C").Value
    Gun = Int(SaatBul)
    Saat = Hour(SaatBul) + Gun * 24
    Dakika = Minute(SaatBul)
    
    MsgBox "Programın Verdiği Sonuç: " & Saat & " Saat " & Dakika & " Dakika" & vbNewLine & vbNewLine & "Benim İstediğim Sonuç: 64 Saat 10 Dakika "
    
    'Bu durumda Saatler sayfasındaki saatleri değiştirmeden bu kod çalıştırıldığında sonuç olarak "16 Saat 10 Dakika" şeklinde sonuç veriyor.
    '48 saati düşmüş oluyor bu durumda
    
    'Benim istediğim Msgbox sonucunun "64 Saat 10 Dakika" şeklinde olmasıdır.
    
End Sub
 
Katılım
11 Aralık 2014
Mesajlar
27
Excel Vers. ve Dili
Microsoft Office 2021 64 bit Türkçe
Deneyiniz.

C++:
Sub Saatler()

    'Kullandığım Excel "Microsoft Excel 2021"
   
    Dim SaatBul As Date
    Dim Saat, Dakika, Gun As Integer
   
    SaatBul = Worksheets("Saatler").Cells(11, "C").Value
    Gun = Int(SaatBul)
    Saat = Hour(SaatBul) + Gun * 24
    Dakika = Minute(SaatBul)
   
    MsgBox "Programın Verdiği Sonuç: " & Saat & " Saat " & Dakika & " Dakika" & vbNewLine & vbNewLine & "Benim İstediğim Sonuç: 64 Saat 10 Dakika "
   
    'Bu durumda Saatler sayfasındaki saatleri değiştirmeden bu kod çalıştırıldığında sonuç olarak "16 Saat 10 Dakika" şeklinde sonuç veriyor.
    '48 saati düşmüş oluyor bu durumda
   
    'Benim istediğim Msgbox sonucunun "64 Saat 10 Dakika" şeklinde olmasıdır.
   
End Sub
Korhan Ayhan hocam çok teşekkür ederim ellerinize emeğinize sağlık çok güzel tam istediğim gibi olmuş. Sağolun varolun.
 
Üst