• DİKKAT

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

excel otomatik tamamlama hakkında yardım

Katılım
10 Ocak 2011
Mesajlar
48
Excel Vers. ve Dili
2007
merhaba iyi günler ALM/17 enter tuşuna bastığınızda otomatik evrak numarasını tamamlayacak ZRV2020000000017)
KAA/5 yazıp entera basıncada hücre KAA2020000000005 Olmasını istiyorum. Yani ilk 3 hane yazıp slash bastıktan sonra son haneye gelecek rakamları yazıyorum ve entera basıyorum. ilk 3 haneden sonra 202 getirip ondan sonraki rakamlar 0 olacak şekilde dolduracak. yani ben atıyorum KAA/56825 Yazıp bastığımda hücre böyle olacak KAA2020000056825

Yardımcı olursanız çok sevinirim.
 
Aşağıdaki kodu ilgili sayfanın kod bölümüne (sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya) yapıştırırsanız, A1:a100 aralığına girdiğiniz verileri istediğiniz düzene getirir:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1:A100]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
If Len(Target) = Len(Replace(Target, "/", "")) Then
    If Len(Target) > 3 Then
        kod = Left(Target, 3)
        no = Right(Target, Len(Target) - 3)
        Application.EnableEvents = False
            Target = kod & 202 & WorksheetFunction.Rept(0, 10 - Len(no)) & no
        Application.EnableEvents = True
        Exit Sub
    Else
        MsgBox "Uygun düzende veri giriniz", vbCritical
        Exit Sub
    End If
Else
    kod = Left(Target, WorksheetFunction.Find("/", Target) - 1)
    no = Right(Target, Len(Target) - Len(kod) - 1)
    sifir = WorksheetFunction.Rept(0, 10 - Len(no))
    Application.EnableEvents = False
        Target = kod & 202 & WorksheetFunction.Rept(0, 10 - Len(no)) & no
    Application.EnableEvents = True
End If
End Sub
 
Son düzenleme:
Fonksiyon lu çözümü

KAA/56825

KAA2020000056825
Kod:
=BİRLEŞTİR(SOLDAN(A1;BUL("/";A1)-1);202;YERİNEKOY(YİNELE((16-(UZUNLUK(SOLDAN(A1;BUL("/";A1)-1))+UZUNLUK(202)+UZUNLUK(PARÇAAL(A1;BUL("/";A1)+1;100))))*0+1;16-(UZUNLUK(SOLDAN(A1;BUL("/";A1)-1))+UZUNLUK(202)+UZUNLUK(PARÇAAL(A1;BUL("/";A1)+1;100))));1;0);PARÇAAL(A1;BUL("/";A1)+1;100))
 
çok teşekkür ederim ikiside çok işime yaradı yalnız şöyle bi durum var bu girdigim sutunda sadece bu tipler çok küçük hanelılerde var ben onu normal elle giricem bu uzun tipleri sadece bu sistemle girmek istiyorum.
 
Peki hangi verinin kısa hangi verinin uzun olması gerektiğini excel nasıl bilecek?
 
yani kimisi 156789 mesela bunları elle gircem ama ne zaman KLD/13 Enter bastıgımdada sızın yaptıgınız gibi yapsın istiyorum yani slash oldugu yerde yukarıdaki yöntem olsun ama / olmadıgı yerde normal rakamlar manuel girebileyim. Böyle birşey olabilirmi yusuf bey
 
Aşağıdaki kodu deneyin:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1:A100]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
If Len(Target) <> Len(Replace(Target, "/", "")) Then
    kod = Left(Target, WorksheetFunction.Find("/", Target) - 1)
    no = Right(Target, Len(Target) - Len(kod) - 1)
    sifir = WorksheetFunction.Rept(0, 10 - Len(no))
    Application.EnableEvents = False
        Target = kod & 202 & WorksheetFunction.Rept(0, 10 - Len(no)) & no
    Application.EnableEvents = True
End If
End Sub

Bu arada ilk kodda deneme için bazı kontrol satırları vardı. Onları sildim, #2 nolu mesajda ilk kodun olması gereken hali vardır.
 
Aşağıdaki kodu deneyin:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1:A100]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
If Len(Target) <> Len(Replace(Target, "/", "")) Then
    kod = Left(Target, WorksheetFunction.Find("/", Target) - 1)
    no = Right(Target, Len(Target) - Len(kod) - 1)
    sifir = WorksheetFunction.Rept(0, 10 - Len(no))
    Application.EnableEvents = False
        Target = kod & 202 & WorksheetFunction.Rept(0, 10 - Len(no)) & no
    Application.EnableEvents = True
End If
End Sub

Bu arada ilk kodda deneme için bazı kontrol satırları vardı. Onları sildim, #2 nolu mesajda ilk kodun olması gereken hali vardır.


tam istediğim gibi oldu çok teşekkürler.
 
Geri
Üst