Metin içerisinden TC No Alma

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.
 

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,175
Excel Vers. ve Dili
Ofis 2019 Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2028
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.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,384
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
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
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,405
Excel Vers. ve Dili
2007 Türkçe
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.
 
Katılım
6 Temmuz 2013
Mesajlar
14
Excel Vers. ve Dili
Excel 2010 Türkçe
Cevaplar için çok teşekkür ediyorum çok sağolun. Süpersiniz.
 
Son düzenleme:

esahin1907

Altın Üye
Katılım
17 Aralık 2011
Mesajlar
135
Excel Vers. ve Dili
ingilizce
Altın Üyelik Bitiş Tarihi
07-02-2026
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)
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
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:
Katılım
20 Temmuz 2009
Mesajlar
183
Excel Vers. ve Dili
office 2016
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]
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,644
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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:

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,644
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
..............
 
Son düzenleme:
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
İlgili formül güncellenmiştir.
 
Son düzenleme:
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Alnernatif;
Bir Abimin yardımlarıyla.
Kod:
=METNEÇEVİR(-ARA(;-PARÇAAL(" "&J1;
   MBUL(" ??????????? ";YERİNEKOY(" "&J1&" ";;" ");
SATIR(1:38));12));"00000000000")
 
Katılım
15 Kasım 2007
Mesajlar
336
Excel Vers. ve Dili
iş: 2010 İngilizce

ev:2010 Türkçe
Altın Üyelik Bitiş Tarihi
07.08.2023
Peki metin içerisinde hiç boşluk olmasaydı veya bir karakterden sonraki 11 haneli sayıyı almak isteseydik?
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
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:
Katılım
15 Kasım 2007
Mesajlar
336
Excel Vers. ve Dili
iş: 2010 İngilizce

ev:2010 Türkçe
Altın Üyelik Bitiş Tarihi
07.08.2023
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ı?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,006
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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))
 
Üst