• DİKKAT

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

Saati Düzenleme

  • Konbuyu başlatan Konbuyu başlatan Hsn55
  • Başlangıç tarihi Başlangıç tarihi
Katılım
7 Şubat 2021
Mesajlar
594
Excel Vers. ve Dili
2010, Türkiye
İyi günler;
Ekli örnek dosyada Veri Sayfasında E11:F41 hücre aralığına saati aşağıdaki gibi i girdiğim zaman otomatik olarak düzeltmek mümkün müdür?
Örneğin
08,00 yazdığım zaman 08:00
08.00
yazdığım zaman 08:00
08,
yazdığım zaman 08:00
08.
yazdığım zaman 08:00

 
Hocam öncelikle teşekkür ederim. Sizden ricam kodları yada dosyayı link olarak paylaşabilir misiniz?
 
Hocam buton olmadan bunu yapabilir miyiz. Yani E11:F41 hücre aralığına yukarıda bahsettiğim şekilde girdiğim zaman anlık saate çevirecek
 
Merhaba

Bu otomatik düzeltmeyi gerçekleştirmek için Excel'de bir formül kullanabilirsiniz. Aşağıdaki adımları takip edebilirsiniz:
  1. Gerekli hücrelere 08,00 gibi saat değerlerini girin.
  2. Boş bir hücrede, aşağıdaki formülü girin:
=IFERROR(TEXT(TIMEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E11,".",":"),",",":")," ","")+":00"), "hh:mm"),"")

Bu formülde, E11 hücresindeki değer, nokta ve virgül işaretlerinin yerine iki nokta işaretiyle değiştirilir. Böylece, "08.00" veya "08,00" gibi değerler "08:00" olarak düzeltilir. Daha sonra, TIMEVALUE ve TEXT işlevleri kullanarak, bu değer bir zaman değerine dönüştürülür ve "hh:mm" biçiminde biçimlendirilir. 3. Bu formülü girdiğiniz hücrenin altındaki tüm hücrelere bu formülü uygulayın. Böylece, hücrelerdeki değerler otomatik olarak düzeltilecektir.
Bu yöntemle, belirli saat formatlarının otomatik olarak düzeltilmesini sağlayabilirsiniz. Ancak, saat formatları farklıysa, formülde bazı değişiklikler yapmanız gerekebilir.
 
Bir önceki mesajıma harici link ekledim.
 
Korhan bey asıl dosyamda veri doğrulama şeklinde kullanıyordum. Benim istediğim yanlışlıkla saati 08,00-08, -08.15- 08,15 gibi girdiğim zaman yani aşağıdaki şekilde makro ile düzeltilmesi idi
08,00=08:00
08,=08:00
08.=08:00
08.00=08:00
 
Ben size en pratik olan yöntemi önerdim. Bu yöntem sizin yanlış veri girişinizi engeller ve sizi doğru veri girişine zorlar.

Excelde boş bir hücrede sizin dediğiniz tarzda veri girişi yaptığınızda aşağıdaki görseller oluşur.

08,00 = 8
08, = 8
08. = 08.
08.00 = 08:00
 
Yine de makro ile yapmak istiyorsanız aşağıdaki kodu denersiniz.

Harici Link (Silinebilir) ; https://dosya.co/ib306wxqas4t/Saat_Biçimlendirme.xlsm.html

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range
    On Error GoTo Safe_Exit
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For Each Rng In Intersect(Target, Range("E11:F41"))
        If Rng <> "" Then
            Select Case True
                Case Len(Rng) > 4 And (Not Rng Like "*[.,:]*")
                    GoTo Alert
                Case Not IsNumeric(Rng) And (Not Rng Like "*[.,:]*")
                    GoTo Alert
                Case Len(Rng) = 1
                    If Not IsNumeric(Rng) Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Rng & ":00")
                Case Len(Rng) = 2
                    If Val(Left(Rng, 2)) > 23 Or Not IsNumeric(Right(Rng, 1)) Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Rng & ":00")
                Case (Rng Like "??.")
                    If Val(Left(Rng, 2)) > 23 Then GoTo Alert
                    Rng.Replace ".", ":"
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Rng & "00")
                Case (Rng Like "??,")
                    If Val(Left(Rng, 2)) > 23 Then GoTo Alert
                    Rng.Replace ",", ":"
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Rng & "00")
                Case (Rng Like "??:")
                    If Val(Left(Rng, 2)) > 23 Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Rng & "00")
                Case (Rng Like "??.??")
                    If Val(Left(Rng, 2)) > 23 Or Val(Right(Rng, 2)) > 59 Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng.Replace ".", ":"
                Case (Rng Like "??,??")
                    If Val(Left(Rng, 2)) > 23 Or Val(Right(Rng, 2)) > 59 Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng.Replace ",", ":"
                Case (Rng Like "??:??")
                    If Val(Left(Rng, 2)) > 23 Or Val(Right(Rng, 2)) > 59 Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng.Replace ":", ":"
                Case Len(Rng) = 3 And (Not Rng Like "*:*")
                    If Val(Left(Rng, 2)) > 23 Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Left(Rng, 1) & ":" & Right(Rng, 2))
                Case Len(Rng) = 4 And (Not Rng Like "*:*")
                    If Val(Left(Rng, 2)) > 23 Or Val(Right(Rng, 2)) > 59 Then GoTo Alert
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Left(Rng, 2) & ":" & Right(Rng, 2))
                Case IsNumeric(Rng)
                    Rng.NumberFormat = "hh:mm;@"
                    Rng = CDate(Rng)
                Case Else
Alert:              MsgBox "Lütfen saat formatında veri girişi yapınız!", vbCritical, "Hatalı Veri Girişi"
                    Application.Undo
            End Select
        Else
            Rng.NumberFormat = "@"
        End If
    Next
Safe_Exit:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("E11:F41")) Is Nothing Then Exit Sub
    If IsEmpty(Target) Then Target.NumberFormat = "@"
End Sub
 

Ekli dosyalar

Korhan bey kodlar istediğim gibi çalışmadı. Yine de ilginiz için çok teşekkür ederim
 
Selamlar

Sayın @Hsn55 bende Korhan Hocamın kodlarını denedim . Bende çalıştı
 
Küçük bir revize yaptım. Tekrar deneyiniz.
 
Korhan bey yine aynı hücreleri sildiğimde tüm hücreler 00:00 şeklinde oluyor.
Örneğin 08.10 yazdığımda 810:00 oluyor
 
Bu sebeple size ilk dosyayı önermiştim. Neresinden tutarsanız gördüğünüz gibi bozuluyor.

Belki ilgili alan METİN olarak biçimlendirilirse daha sağlıklı sonuçlar alınabilir.
 
Sayıya göre kurguladığım için sorun oluyor.

Çözüm bulursam paylaşırım.
 
Geri
Üst