• DİKKAT

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

Telefon formatı

Katılım
15 Temmuz 2012
Mesajlar
2,802
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Merhaba arkadaşlar hayırlı çalışmalar,

Benim bir küçük sorum olacak, excel sayfamın F1 ile F300 arasında telefon numaraları var, bu telefon numaraları farklı şekilde yazılmış, kimisinin başında 0 var, kimisini tümü birleşik yazılmış, kimileri de aralıklı yazılmış.

Ben bunu =YERİNEKOY(F1;" ";"") formülü ile birleştiriyorum, hücre üzerinde sağ mause hücreleri biçimlendir/sayı/özel/telefon numarasını seçiyorum, sonra isteğe göre uyarladan [<=9999999]###-####;0 ### ### ## ## bunu seçip kapattığımda telefon numarası istediğim gibi oluyor, ancak hücrenin içeresine girdiğimde, bütün numaralar birleşmiş oluyor, hücreden dışarı çıktığımda 0 312 123 45 67 şeklinde görünüyor. Ctrl+F bul ile 0 312 123 45 67 yazıp ara dediğimde bulmuyor.

Benim istediğim hücre içerisine girdiğimde de 0 312 123 45 67 bu şekilde hücre dışına çıktığımda da 0 312 123 45 67 bu şekilde görünmesini istiyorum.

Forumda çok örnekler var, ancak bu kadar uyarlama yapabildim.

Yardım edecek arkadaşlara şimdiden çok teşekkür ederim.
 
Bence yaptığınız gibi dursun, arama yaparken 0 312 123 45 67 olarak değil 03121234567 olarak arayın. Dediğiniz gibi olması için hücrelerde teker teker o boşluklar bırakılmalıdır. Öyle yaptığınızda da hücre biçimlendirmenin bir anlamı kalmaz. Biçimlendirmenin amacı zaten girilen sayıyı istenilen şekilde göstermektir.
 
Yusuf44 Bey, bu dosyadan exceli fazla bilmeyen arkadaşlarda faydalandığı için bulamıyor.

Benim istediğim gibi yapılabilir mi?
 
İstediğiniz gibi yapılabilir ama dediğim gibi biçimlendirme anlamsız olur. Aşağıdaki kodları bir modüle ekleyip çalıştırdığınızda F1:F300 arasındaki hücrelerdeki verileri 0 312 123 45 67 şekline dönüştürür:

Kod:
Sub tel()
For i = 1 To 300
kod = "0" & " " & Left(Right(Cells(i, "F"), 10), 3)
ilk = Mid(Right(Cells(i, "F"), 10), 4, 3)
iki = Mid(Right(Cells(i, "F"), 10), 7, 2)
üç = Right(Cells(i, "F"), 2)
Cells(i, "F") = kod & " " & ilk & " " & iki & " " & üç
Next
End Sub

Yalnız belirttiğim gibi biçimlendirme anlamsız olduğundan o hücrelerdeki biçimlendirmeyi iptal etmeniz iyi olur. Ayrıca bu makro hücrenin sağdan 10 karakterine işlem yapar. Hücrelerde bu format dışında veri varsa (daha uzun ya da daha kısa) sonuç hatalı olur.
 
YUSUF44 Bey çok teşekkür ediyorum.

Yazmış olduğunuz kod 3121234567 telefon numarasını 0 312 123 45 67 şeklinde çevirdi tam istediğim gibi olmuş elinize sağlık.

Küçük bir istediğim olabilir mi? F1 hücresinde telefon numarası ne şekilde yazılırsa yazılsın, 0 312 123 45 67 bu şekilde yapılır mı? Şimdiden çok teşekkür ediyorum.
 
Aşağıdaki kodu ilgili sayfanın kod bölümüne yapıştırdığınızda F1:F300 aralığında 10 basamaklı telefon numarası girmeye zorlar, 10 basamaklı telefon numarası girilince istediğiniz formata dönüştürür, 10 basamaklı sayı girilmezse uyarı verip girilen değeri siler:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [f1:f300]) Is Nothing Then Exit Sub
If WorksheetFunction.IsNumber(Target) = False Or Len(Target) <> 10 Then
uyarı = MsgBox("Girdiğiniz değer formata uygun telefon numarası değil, lütfen 10 basamaklı telefon numarası giriniz. " & Chr(10) & "Örnek: 1234567890")
Application.EnableEvents = False
Target.Select
Target.Delete
Application.EnableEvents = True

Else
kod = "0" & " " & Left(Right(Target, 10), 3)
ilk = Mid(Right(Target, 10), 4, 3)
iki = Mid(Right(Target, 10), 7, 2)
üç = Right(Target, 2)
Application.EnableEvents = False
Target = kod & " " & ilk & " " & iki & " " & üç
Application.EnableEvents = True
End If
End Sub
 
Sayın YUSUF44 Bey, tam istediğim gibi olmuş elinize sağlık.

Kusura bakmayın sizi yordum çok teşekkür ederim, Allah razı olsun, hayırlı çalışmalar.
 
Estağfurullah, sizden de, kolay gelsin.
 
güzel paylaşım.
ben de şu kodu yapıştırayım da tam olsun :D
Kod:
Sub telSifirAtma()
' telsifiratma Makrosu seçili hücrelerde baştaki sıfırları yok eder
' istenirse comment alanında "answer if/" yazılı satırlar silinebilir
Dim rng As Range, cell As Range

Set rng = Selection ' excelde kullanıcnın seçtiği hücreleri tanımlar

answer = MsgBox("Seçili hücrelerden sıfır ile başlayanların soldan ilk karakteri silinerek, solundaki ve sağındaki boşluklar temizlenecektir", vbYesNo + vbQuestion, "Baştaki Sıfırı Sil") 'answer if/
If answer = vbYes Then 'answer if/ makro yanlışlıka kullanılmasın diye sorgu.

    For Each cell In rng 'seçimdeki her hücreyi tek tek cell değişkenine atar
    cell.Value = Trim(cell.Value) 'seçili cell değişkeninin başı ve sonundaki boşlukları temizler
        If Left(cell.Value, 1) = "0" Then ' hucre 0 ile başlıyorsa devam eder
        cell.Value = Trim(Right(cell.Value, (Len(cell.Value) - 1))) 'hucre değeri uzunluğundan bir eksik kadar karakteri alır, boşlukları temizleyip hücrenin eski değerinin üstüne yazar
        End If
    Next cell
    
Else 'answer if/ ilk sorguda hayıra tıklanırsa hiçbirşey yapmadan buraya gelinir

End If 'answer if/ son

End Sub
 
Yusuf44 Merhaba

Yazmış olduğunuz kodu ben ekleyip yaptığımda çalışıyor ancak bir alt satıra yeni bir numara yazıp çalıştırdığımda bir üstteki telefon numarasında hem rakam eksilmesi hem de rakam değişikliğine gidiyor. Bir anormallik var sanırım.

İstediğiniz gibi yapılabilir ama dediğim gibi biçimlendirme anlamsız olur. Aşağıdaki kodları bir modüle ekleyip çalıştırdığınızda F1:F300 arasındaki hücrelerdeki verileri 0 312 123 45 67 şekline dönüştürür:

Kod:
Sub tel()
For i = 1 To 300
kod = "0" & " " & Left(Right(Cells(i, "F"), 10), 3)
ilk = Mid(Right(Cells(i, "F"), 10), 4, 3)
iki = Mid(Right(Cells(i, "F"), 10), 7, 2)
üç = Right(Cells(i, "F"), 2)
Cells(i, "F") = kod & " " & ilk & " " & iki & " " & üç
Next
End Sub

Yalnız belirttiğim gibi biçimlendirme anlamsız olduğundan o hücrelerdeki biçimlendirmeyi iptal etmeniz iyi olur. Ayrıca bu makro hücrenin sağdan 10 karakterine işlem yapar. Hücrelerde bu format dışında veri varsa (daha uzun ya da daha kısa) sonuç hatalı olur.
 
Bu kodlar her seferinde 1. satırdan 300. satıra kadar aynı işlemi uygular. Yani Siz her çalıştır dediğinizde tekrar tekrar aynı işlemi yaptırıyorsunuz. Dolayısıyla Bahsettiğiniz durum olması normal. Arkadaş ilk sorduğunda 300 numarayı bir defada nasıl düzeltebilirim dediği için bu kodu hazırlamıştım. Daha sonraki kodda ise girilecek yeni numaralar için düzeltme işlemini ayarlamıştım.
 
Geri
Üst