Makro ile Saatten Dakika Çıkarmak

Katılım
8 Aralık 2009
Mesajlar
44
Excel Vers. ve Dili
excel 2016
Merhabalar,
A-B-C-D Sütunlarında 07:42 , 08:15 , 09:20 .... gibi saat verileri yer almaktadır. Ben bu saatlerin hepsinden 20 dakika çıkarmak istiyorum. Örneğin A2 hücresinde 07:42 saati yer alıyor. Makro çalıştırıldığında 07:22 olmasını istiyorum. Tabi bunu sütunlardaki bütün saatlere uygulasın. Şimdiden çok teşekkürler.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    Dim huc As Range
    For Each huc In Intersect([A:D], ActiveSheet.UsedRange)
        If Not IsEmpty(huc.Value) And IsNumeric(huc.Value) Then
            If huc.Value > TimeSerial(0, 20, 0) Then
                huc.Value = huc.Value - TimeSerial(0, 20, 0)
                Else
                huc.Value = huc.Value + TimeSerial(23, 40, 0)
            End If
        End If
    Next
End Sub
 
Katılım
8 Aralık 2009
Mesajlar
44
Excel Vers. ve Dili
excel 2016
Ellerinize sağlık çok güzel olmuş, çok teşekkürler...
 

Korhan Ayhan

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

Makro kullanmadan kopyala-özel yapıştır-değerleri-çıkar adımı ile de yapabilirsiniz.

Boş bir hücreye 00:20 yazın.
Sonra bu hücreyi kopyalayın.
Sonra saatlerin bulunduğu hücreleri seçin.
Sağ klik özel yapıştır-değerleri-çıkar komutlarını seçip işlemi tamamlayın.
 
Katılım
8 Aralık 2009
Mesajlar
44
Excel Vers. ve Dili
excel 2016
Tekrar Merhabalar,
Hocam şimdi butona her tıkladığımda 20 dk düşürüyor ben bunun bi defa olmasını istiyorum ikinci defa tıklandığında uyarı versin bunu da yaparsanız çok sevinirim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,653
Excel Vers. ve Dili
Pro Plus 2021
Çalışma kitabı her açıldıktan sonra bir kez çalışacaktır.
Kod:
Dim calisti As Boolean
Sub test()
    If calisti Then Exit Sub
    calisti = True
    Dim huc As Range
    For Each huc In Intersect([A:D], ActiveSheet.UsedRange)
        If Not IsEmpty(huc.Value) And IsNumeric(huc.Value) Then
            If huc.Value > TimeSerial(0, 20, 0) Then
                huc.Value = huc.Value - TimeSerial(0, 20, 0)
            Else
                huc.Value = huc.Value + TimeSerial(23, 40, 0)
            End If
        End If
    Next
End Sub
 
Katılım
8 Aralık 2009
Mesajlar
44
Excel Vers. ve Dili
excel 2016
Korhan hocam ve Veysel bey ikinize de çok teşekkür ederim. Her iki yöntem de fazlasıyla işe yarıyor.
 
Üst