• DİKKAT

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

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.
 
Çok teşekkür ederim Sayın Soft hocam şimdi deneme imkanım yok denediğim de size bilgi vereceğim.
 
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.
 
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.
 
Merhaba,

Alternatif olarak ekteki gibi olabilir...

Untitled.png


251596
 
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.
 
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
 
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.
 
Geri
Üst