• DİKKAT

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

Metnin İçinden Veri Alma

Katılım
2 Şubat 2012
Mesajlar
27
Excel Vers. ve Dili
Türkçe
Arkadaşlar Merhaba,

Benim şöyle bir sorunum A1 hücresinde bulunan ve aşağıda verdiğim metnin içinden "Vol. 27" kısmını ayırmak istiyorum ve hatta mümkünse 27 sayısını tek başına yazmak mümkün olabilir mi?


Satellite Symposium held at the 18th European Stroke Conference, Stockholm, May 2009: Proceedings. Supplement Issue: Cerebrovascular Diseases 2009, Vol. 27, Suppl. 3
 
veri buysa bir hücreye Vol. 27 veya 27 yazın olsun bitsin.

değilse, yani daha veri ayıklanacak çok kayıt varsa onları bize de gösterin ki, bir kural oluşturulabilir mi bakalım.

yoksa buraya ekleyeceğimiz formül sadece "Vol. XX" içeren metinlerde işe yarar.
 
yukarıda dediğimi formüle dökeyim:

Kod:
=MID(A1;FIND("Vol. ";A1)+LEN("Vol. ");2)
=PARÇAAL(A1;BUL("Vol. ";A1)+UZUNLUK("Vol. ");2)

NOT:
FIND/BUL fonksiyonu büyük/küçük harf duyarlı iken SEARCH/MBUL değildir.
dolayısı ile metinde "VOL." ibaresi geçiyorsa ve "Vol." yanında bunu da yakalamak istiyorsak SEARCH/MBUL kullanmalıyız.
yani
Kod:
=MID(A1;SEARCH("Vol. ";A1)+LEN("Vol. ");2)
=PARÇAAL(A1;MBUL("Vol. ";A1)+UZUNLUK("Vol. ");2)
 
Son düzenleme:
Alternatif olarak
Verileriniz "Cerebrovascular Diseases 2009, Vol. 27, Suppl. 3" bu kalıptaysa Vol. ifadesinden sonraki rakam lazımsa;
Kod:
=KIRP(SOLDAN(YERİNEKOY(DEĞİŞTİR(A1;1;BUL("@";YERİNEKOY(","&A1;",";"@";4))+5;"");
  ",";YİNELE(" ";256);1);256))
 
Son düzenleme:
veri buysa bir hücreye Vol. 27 veya 27 yazın olsun bitsin.

değilse, yani daha veri ayıklanacak çok kayıt varsa onları bize de gösterin ki, bir kural oluşturulabilir mi bakalım.

yoksa buraya ekleyeceğimiz formül sadece "Vol. XX" içeren metinlerde işe yarar.

Evet dediğiniz gibi sadece Vol. XX te işe yarıyor ancak "Vol. X" de var "Vol. XXX" de var
 
Merhaba,

Bence makro kullanın. Aşağıdaki fonksiyonu boş bir module yapıştırın:

Kod:
Public Function ayir(ByRef rng As Range) As String
    On Error Resume Next
    Dim reg As Object, col As Object
    
    Set reg = CreateObject("VBScript.RegExp")
    
    reg.ignorecase = True
    reg.Pattern = "vol(?:\s|\.)*(\d*)"
    
    Set col = reg.Execute(rng.Text)
    
    ayir = col(0).submatches(0)
    
    If Err Then ayir = Err.Description
End Function
Sonra, hücrede ayırmak istediğniz metni içeren hücre adresini belirterek örneğin aşağıdaki gibi kullanın.


Kod:
=ayir(A1)
Kolay gelsin...

.
.
.
.
 
"Vol." ve sağındaki sayısal değer dahil alabilmek için (verdiğiniz örnekte Vol. 27) ;
Kod:
=KIRP(PARÇAAL(A1;BUL("Vol.";A1;1);BUL(",";A1;BUL("Vol.";A1;1))-BUL("Vol.";A1;1)))
Sadece, bu değerin sağındaki 27 sayısını almak için (sayı kısmı kaç basamaklı olursa olsun;
Kod:
=1*KIRP(PARÇAAL(A1;BUL("Vol.";A1;1)+4;BUL(",";A1;(BUL("Vol.";A1;1)+4))-(BUL("Vol.";A1;1)+4)))
 
Merhaba,

Bence makro kullanın. Aşağıdaki fonksiyonu boş bir module yapıştırın:

Kod:
Public Function ayir(ByRef rng As Range) As String
    On Error Resume Next
    Dim reg As Object, col As Object
    
    Set reg = CreateObject("VBScript.RegExp")
    
    reg.ignorecase = True
    reg.Pattern = "vol(?:\s|\.)*(\d*)"
    
    Set col = reg.Execute(rng.Text)
    
    ayir = col(0).submatches(0)
    
    If Err Then ayir = Err.Description
End Function
Sonra, hücrede ayırmak istediğniz metni içeren hücre adresini belirterek örneğin aşağıdaki gibi kullanın.


Kod:
=ayir(A1)
Kolay gelsin...

.
.
.
.

Evet gerçekten çalıştı ve oldu çok teşekkürler makrodan pek anlamam ama modülü yapıştırmayı becerdim. Elinize sağlık...
 
"Vol." ve sağındaki sayısal değer dahil alabilmek için (verdiğiniz örnekte Vol. 27) ;
Kod:
=KIRP(PARÇAAL(A1;BUL("Vol.";A1;1);BUL(",";A1;BUL("Vol.";A1;1))-BUL("Vol.";A1;1)))
Sadece, bu değerin sağındaki 27 sayısını almak için (sayı kısmı kaç basamaklı olursa olsun;
Kod:
=1*KIRP(PARÇAAL(A1;BUL("Vol.";A1;1)+4;BUL(",";A1;(BUL("Vol.";A1;1)+4))-(BUL("Vol.";A1;1)+4)))

Dediğinizi yaptım ama çalışmadı DEĞER hatası veriyor....
 
"Tüm Kodu Seç" diyerek kopyala yapıştır şeklinde işlem yaptığınıza emin misiniz?
Tekrar denedim ve sonuç aldım.
(Denediğim metin ilk mesajınızdaki metin.)

Belirttiğiniz metnin A1 hücresinde olduğu varsayılmıştır.
 
Son düzenleme:
"Tüm Kodu Seç" diyerek kopyala yapıştır şeklinde işlem yaptığınıza emin misiniz?
Tekrar denedim ve sonuç aldım.
(Denediğim metin ilk mesajınızdaki metin.)

Evet şimdi fark ettim benim verdiğim örnekte ", Vol. 27," şeklindeydi şu anda elimdeki diğer satırlarda ise virgül olmadan yani ..." Vol. 32 "... gibi olunca yanlış oldu ama ...", Vol. 32,"...virgül koydum ve formülünüzün çalıştığını gördüm.

Benim hatam diğer bazı satırlarda virgül yokki Kusura bakmayın bunu belirtmemiştim

Elinize sağlık...Çalışıyor...
 
Sizin verdiğiniz örnekte "," olduğu için ona göre formül kurdum. Onun dışında bir standart varsa formülü de ona göre düzenlemek lazım. Dikkat ederseniz, "Vol....." den sonraki "," aratarak sonuç aldırdım, neticede verinin standardına göre düşünmek lazım.
 
ÇÖZÜLDÜ

Sizin verdiğiniz örnekte "," olduğu için ona göre formül kurdum. Onun dışında bir standart varsa formülü de ona göre düzenlemek lazım. Dikkat ederseniz, "Vol....." den sonraki "," aratarak sonuç aldırdım, neticede verinin standardına göre düşünmek lazım.

Teşekkürler...
 
Geri
Üst