Tek haneli rakamların başına sıfır değeri ekleme.

_GÜRCAN_

Altın Üye
Katılım
16 Ocak 2009
Mesajlar
69
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2016 TR
Altın Üyelik Bitiş Tarihi
27-01-2026
Her ay artan A, B VE C sütunlarındaki değerlerin (bu ay 135.192 satırda), F sütununda örnek gösterdiğim değerler gibi tek haneli olan rakamların başına 0 (Sıfır) getirmek istiyorum. Makro veya formül ile yapılabir mi.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
F sütunundali verilerin diğer sütunlarla bir bağı var mı?
F sütununa veriyi siz elle girdiğinizde sayı olan ve tek basamaklı tüm içeriklerin başına Sıfırı otomatik mi koysun?
Parantezleri de mi koysun?
F sütunan verileri elle tek tek mi giriyorsunuz başka bir yerden Copy-Paste yaparak mı?
 

_GÜRCAN_

Altın Üye
Katılım
16 Ocak 2009
Mesajlar
69
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2016 TR
Altın Üyelik Bitiş Tarihi
27-01-2026
F sütunundali verilerin diğer sütunlarla bir bağı var mı?
F sütununa veriyi siz elle girdiğinizde sayı olan ve tek basamaklı tüm içeriklerin başına Sıfırı otomatik mi koysun?
Parantezleri de mi koysun?
F sütunan verileri elle tek tek mi giriyorsunuz başka bir yerden Copy-Paste yaparak mı?
Ömer bey merhaba,
öncelikle ilgilendiğiniz için teşekkür ediyorum,
sistemden rapor aldığımda sütuların uzantısı, A Sütunundan X Sütununa kadar, ek dosyada sütun başlıklarını belirttim. olması gereken asıl sütunlar N, O ve Q sütunları.
F sütunundaki verilerin diğer sütunlar ile bir bağı yok ben örnek olarak gösterdim F sütununda.
F sütununa verileri elle girmiyorum, ama dediğiniz gibi tek basamaklı tüm içeriklerin başına sıfır otomatik koymasını istiyorum.
parantezlerde olması gerekiyor.
F sütunu ile bir bağım yok.
 

Ekli dosyalar

Katılım
8 Nisan 2005
Mesajlar
758
Excel Vers. ve Dili
Excel 2010 Türkçe
Hücre Biçimlendir ile yapabilirsiniz.

-Hücreleri Biçimlendir
-Sayı
-İsteğe Uyarlanmış
-0#
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
RegExp ile olur mu bilemedim. Beceremediğim bir konu.
Ancak aşağıdaki kodları bir Modüle içine yerleştirip sayfanızda çalıştırırsanız N-O-Q sütunlarında işlem yapmaktadır.
Çalıştırmadan önce dosyanın yedeğini almanızı tavsiye ederim.

C++:
Sub TekHaneleriDuzelt()
Dim Veri, ListeN, ListeO, ListeQ
Dim x As Byte, i As Long, k As Integer, xLen As Integer, Bak As String, Say As String, YeniDeger As String
    Veri = Range("N2:Q" & Range("N" & Rows.Count).End(3).Row).Value
    ReDim ListeN(1 To UBound(Veri), 1 To 1)
    ReDim ListeO(1 To UBound(Veri), 1 To 1)
    ReDim ListeQ(1 To UBound(Veri), 1 To 1)
    
    For x = 1 To 4
        If x = 3 Then x = 4
        For i = 1 To UBound(Veri)
            Bak = Veri(i, x)
            xLen = Len(Bak)
            YeniDeger = ""
            For k = 1 To xLen
                Say = Mid(Bak, k, 1)
                If IsNumeric(Mid(Bak, k, 1)) Then
                    If k = 1 And xLen = 1 Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k = 1 And xLen > 1 And Not IsNumeric(Mid(Bak, 2, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k > 1 And xLen = 2 And Not IsNumeric(Left(Bak, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k > 1 And xLen > 2 And k < xLen And Not IsNumeric(Mid(Bak, k - 1, 1)) And Not IsNumeric(Mid(Bak, k + 1, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k = xLen And Not IsNumeric(Mid(Bak, k - 1, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    Else
                        YeniDeger = YeniDeger & Say
                    End If
                Else
                    YeniDeger = YeniDeger & Say
                End If

            Next k
            Select Case x
                Case 1
                ListeN(i, 1) = YeniDeger
                Case 2
                ListeO(i, 1) = YeniDeger
                Case Else
                ListeQ(i, 1) = YeniDeger
            End Select
        Next i
    Next x
    Range("N2").Resize(UBound(Veri), 1) = ListeN
    Range("O2").Resize(UBound(Veri), 1) = ListeO
    Range("Q2").Resize(UBound(Veri), 1) = ListeQ
    Erase Veri: Erase ListeN: Erase ListeO: Erase ListeQ
End Sub
 

_GÜRCAN_

Altın Üye
Katılım
16 Ocak 2009
Mesajlar
69
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2016 TR
Altın Üyelik Bitiş Tarihi
27-01-2026
RegExp ile olur mu bilemedim. Beceremediğim bir konu.
Ancak aşağıdaki kodları bir Modüle içine yerleştirip sayfanızda çalıştırırsanız N-O-Q sütunlarında işlem yapmaktadır.
Çalıştırmadan önce dosyanın yedeğini almanızı tavsiye ederim.

C++:
Sub TekHaneleriDuzelt()
Dim Veri, ListeN, ListeO, ListeQ
Dim x As Byte, i As Long, k As Integer, xLen As Integer, Bak As String, Say As String, YeniDeger As String
    Veri = Range("N2:Q" & Range("N" & Rows.Count).End(3).Row).Value
    ReDim ListeN(1 To UBound(Veri), 1 To 1)
    ReDim ListeO(1 To UBound(Veri), 1 To 1)
    ReDim ListeQ(1 To UBound(Veri), 1 To 1)
   
    For x = 1 To 4
        If x = 3 Then x = 4
        For i = 1 To UBound(Veri)
            Bak = Veri(i, x)
            xLen = Len(Bak)
            YeniDeger = ""
            For k = 1 To xLen
                Say = Mid(Bak, k, 1)
                If IsNumeric(Mid(Bak, k, 1)) Then
                    If k = 1 And xLen = 1 Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k = 1 And xLen > 1 And Not IsNumeric(Mid(Bak, 2, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k > 1 And xLen = 2 And Not IsNumeric(Left(Bak, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k > 1 And xLen > 2 And k < xLen And Not IsNumeric(Mid(Bak, k - 1, 1)) And Not IsNumeric(Mid(Bak, k + 1, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k = xLen And Not IsNumeric(Mid(Bak, k - 1, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    Else
                        YeniDeger = YeniDeger & Say
                    End If
                Else
                    YeniDeger = YeniDeger & Say
                End If

            Next k
            Select Case x
                Case 1
                ListeN(i, 1) = YeniDeger
                Case 2
                ListeO(i, 1) = YeniDeger
                Case Else
                ListeQ(i, 1) = YeniDeger
            End Select
        Next i
    Next x
    Range("N2").Resize(UBound(Veri), 1) = ListeN
    Range("O2").Resize(UBound(Veri), 1) = ListeO
    Range("Q2").Resize(UBound(Veri), 1) = ListeQ
    Erase Veri: Erase ListeN: Erase ListeO: Erase ListeQ
End Sub
ÖmerFaruk Bey,
Deneme yaptım bir sıkıntı görünmüyor, pazartesi detaylı kontrol edeceğim,
ilginiz ve desteğiniz için çok teşekkür ederim.
hayırlı geceler dilerim.
 
Katılım
8 Nisan 2005
Mesajlar
758
Excel Vers. ve Dili
Excel 2010 Türkçe
RegExp ile olur mu bilemedim. Beceremediğim bir konu.
Ancak aşağıdaki kodları bir Modüle içine yerleştirip sayfanızda çalıştırırsanız N-O-Q sütunlarında işlem yapmaktadır.
Çalıştırmadan önce dosyanın yedeğini almanızı tavsiye ederim.

C++:
Sub TekHaneleriDuzelt()
Dim Veri, ListeN, ListeO, ListeQ
Dim x As Byte, i As Long, k As Integer, xLen As Integer, Bak As String, Say As String, YeniDeger As String
    Veri = Range("N2:Q" & Range("N" & Rows.Count).End(3).Row).Value
    ReDim ListeN(1 To UBound(Veri), 1 To 1)
    ReDim ListeO(1 To UBound(Veri), 1 To 1)
    ReDim ListeQ(1 To UBound(Veri), 1 To 1)
   
    For x = 1 To 4
        If x = 3 Then x = 4
        For i = 1 To UBound(Veri)
            Bak = Veri(i, x)
            xLen = Len(Bak)
            YeniDeger = ""
            For k = 1 To xLen
                Say = Mid(Bak, k, 1)
                If IsNumeric(Mid(Bak, k, 1)) Then
                    If k = 1 And xLen = 1 Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k = 1 And xLen > 1 And Not IsNumeric(Mid(Bak, 2, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k > 1 And xLen = 2 And Not IsNumeric(Left(Bak, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k > 1 And xLen > 2 And k < xLen And Not IsNumeric(Mid(Bak, k - 1, 1)) And Not IsNumeric(Mid(Bak, k + 1, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    ElseIf k = xLen And Not IsNumeric(Mid(Bak, k - 1, 1)) Then
                        YeniDeger = YeniDeger & "0" & Say
                    Else
                        YeniDeger = YeniDeger & Say
                    End If
                Else
                    YeniDeger = YeniDeger & Say
                End If

            Next k
            Select Case x
                Case 1
                ListeN(i, 1) = YeniDeger
                Case 2
                ListeO(i, 1) = YeniDeger
                Case Else
                ListeQ(i, 1) = YeniDeger
            End Select
        Next i
    Next x
    Range("N2").Resize(UBound(Veri), 1) = ListeN
    Range("O2").Resize(UBound(Veri), 1) = ListeO
    Range("Q2").Resize(UBound(Veri), 1) = ListeQ
    Erase Veri: Erase ListeN: Erase ListeO: Erase ListeQ
End Sub
Bu kodları yalnız B sütunundaki "Tarih" fotmatındaki değerlerin önüne sıfır koymak için nasıl kullanabilirm.
Örnek, 3.01.2022 olan tarihi 03.01.2022 gibi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,230
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
B sütunundaki değerleriniz gerçekten tarihse hücre biçimlendirme ile yapabilirsiniz.

gg.aaaa.yyyy
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Üst