• DİKKAT

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

Metin içerisinden TC No Alma

  • Konbuyu başlatan Konbuyu başlatan ibo13
  • Başlangıç tarihi Başlangıç tarihi
Katılım
6 Temmuz 2013
Mesajlar
14
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba kolay gelsin,
Elimde şu şekilde bir metin var ve ben bunun içerisinden İLK yakaladığı 11 haneli TC Kimlik numarasını çekmek istiyorum. Yardımcı olabilirseniz çok sevinirim.

Keriman San 288/579803 sayılı dosyaya ödenen tutar 60000044444444447777 risk numaralı kredi için 58698798724 alkjsdlkajdlkajlahsdahdkjahakdkaj

Metin yukardakine benzer şekilde 3000 satır kadar ve tek sabit verimiz sayının 11 haneli olması, söz konusu Tc numarasının metin içerisindeki yeri değişebilmektedir.
 
A SUTUNUNDAKİ CÜMLE İÇİNDEN TC KİMLİK NUMARASINI B SUTUNUNA ALIR (SAADECE 11 RAKAMDAN OLŞAN SAYIYI ALIR)
Kod:
Sub tcnoyual()
For a = 2 To [A65536].End(3).Row
Set nesne = CreateObject("VBScript.Regexp")
nesne.Global = True
nesne.Pattern = "\D(\d{11})\D"
Set veri = nesne.Execute(Cells(a, "A"))
If veri.Count > 0 Then Cells(a, "B") = nesne.Execute(Cells(a, "A")).Item(0)
Next
Set nesne = Nothing
End Sub

Not: kodlar evvelce bu siteden temin edilen kodlardır.
 
Aşağıdaki KTF yi kullanabilirsiniz.

Örnek :
Kod:
=TCKbul(A1)

VBA kodu :

Kod:
Function TCKbul(hucre As Range) As String
    Dim reg As Object, m As Object
    
    Set reg = CreateObject("vbscript.regexp")
    
    reg.Pattern = "\b\d{11}\b"
    
    Set m = reg.Execute(hucre)
    
    If Not m Is Nothing Then TCKbul = m(0)
    
    Set m = Nothing
    Set reg = Nothing
End Function
 
Aşağıdaki Kullanıcı tanımlı fonksiyonu deneyiniz.
Kod:
Function TCAL(metin)
a = Split(metin, " ")
For b = LBound(a) To UBound(a)
    If IsNumeric(a(b)) And Len(a(b)) = 11 Then
        TCAL = a(b)
        Exit Function
    End If
Next
End Function

Bu kodu boş bir modüle kopyaladıktan sonra
Kod:
=TCAL(A1)
şeklinde kullanabilirsiniz.
 
Cevaplar için çok teşekkür ediyorum çok sağolun. Süpersiniz.
 
Son düzenleme:
merhaba,
"kredi için" metnin sabit olduğunu düşünürsek aşağıdaki kod işlem görür
=MID(A1;FIND("için";A1)+5;11)
=parçaal(A1;bul("için";A1)+5;11)
 
Merhabalar,
Hücre içerisinde başka 11 haneli sayı olmadığı durumlarda kullanılabilir.
Verinizi J1 hücresine girerek deneyiniz.
Kod:
=ARA(;-1/(PARÇAAL(YERİNEKOY(" "&J1&" ";"";" ");
     SATIR(1:38);13)=" "&METNEÇEVİR(PARÇAAL(J1;SATIR(1:38);11);
"00000000000;;;")&" ");PARÇAAL(J1;SATIR(1:38);11))
[COLOR="Blue"]Formül dizi formülüdür.CTRL + SHIFT + ENTER ile tamamlayınız.[/COLOR]

Daxe Syán
 
Son düzenleme:
Merhaba. Formül $YOK uyarısı veriyor.


Merhabalar,
Hücre içerisinde başka 11 haneli sayı olmadığı durumlarda kullanılabilir.
Verinizi J1 hücresine girerek deneyiniz.
Kod:
=ARA(;-1/(PARÇAAL(YERİNEKOY(" "&J1&" ";"";" ");
     SATIR(1:38);38)=" "&METNEÇEVİR(PARÇAAL(J1;SATIR(1:38);11);
"00000000000;;;")&" ");PARÇAAL(J1;SATIR(1:38);11))
[COLOR="Blue"]Formül dizi formülüdür.CTRL + SHIFT + ENTER ile tamamlayınız.[/COLOR]
 
Merhaba,

Yerleşik fonksiyonlarla yapmak isterseniz, dizi formülüdür. CTRL+SHIFT+ENTER ile kapatmayı unutmayın.

Kod:
=EĞERHATA(PARÇAAL(A1;KÜÇÜK(EĞER(EĞERHATA(BUL(" ";A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1))));UZUNLUK(A1))-BUL(" ";" "&A1&" ";SATIR(DOLAYLI("1:"&UZUNLUK(A1))))=11;SATIR(DOLAYLI("1:"&UZUNLUK(A1))));1);11);SAĞDAN(A1;11))
 
Son düzenleme:
..............
 
Son düzenleme:
İlgili formül güncellenmiştir.
 
Son düzenleme:
Alnernatif;
Bir Abimin yardımlarıyla.
Kod:
=METNEÇEVİR(-ARA(;-PARÇAAL(" "&J1;
   MBUL(" ??????????? ";YERİNEKOY(" "&J1&" ";;" ");
SATIR(1:38));12));"00000000000")
 
Peki metin içerisinde hiç boşluk olmasaydı veya bir karakterden sonraki 11 haneli sayıyı almak isteseydik?
 
Peki metin içerisinde hiç boşluk olmasaydı veya bir karakterden sonraki 11 haneli sayıyı almak isteseydik?
Tam olarak belli bir karakter üzerinden mi gidilecek yoksa belirsiz bir karakterden sonra mı alınacak ?
Verinizi J1 hücresine girerek deneyiniz.
Kod:
=ARA(;-PARÇAAL(YERİNEKOY(J1;"*???????????*";"¹²³")&"¹²³";
  SATIR(1:38);11))*-1

Uitser Madina
 
Son düzenleme:
Diyelimki A1 de dsfhjksdh*1234567891011dsfds diye bir data var. Burada * den sonraki ilk 11 datayı alabilir miyiz? Yada * karakterine bağlı olmadan ilk 11 sayı karakterini alabilir miyiz? İki durum için de bir çözüm var mı?
 
Yıldız karakterinden sonra hemen rakamlar geliyorsa aşağıdaki formül işinizi görecektir.

Kod:
=PARÇAAL(A1;BUL("*";A1)+1;11)


Aşağıdaki DİZİ formül ise karaktere bağlı kalmadan ilk 11 karakterlik sayı dilimini verir.

Kod:
=İNDİS(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));11);KAÇINCI(DOĞRU;ESAYIYSA(0+PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));11));0))
 
Geri
Üst