ilk 2 veya 3 hanesi belli olan spesifik karakterleri uzun metinler içinden çekmek

Deniz_Excel

Altın Üye
Katılım
15 Mart 2016
Mesajlar
134
Excel Vers. ve Dili
MS Excel 2016
Altın Üyelik Bitiş Tarihi
23-10-2026
Merhaba değerli arkadaşlar,

bir kolondaki text içerisinde XXX-XXXX numara kalıbında araç modelleri bulunmaktadır. Bu araç modellerinin ilk 2 ya da 3 harfi spesifik kalıplarda olup kalan kısmı değişmektedir. Burada yapmak istediğim şey bu XXX-XXXX araç nosunu text içerisinden tanıyıp yan kolona yazdıran formülü yazmaktır.
Eğer 2 adet farklı araç modelim olsaydı bunu aşağıdaki formülden yaptırabiliyordum. Ancak araç model sayımız ikiden fazla olduğundan dolayı formülü ne şekilde adapte etmem gerektiğini bulamadım. Şimdiden yardımınız için teşekkürler.

Örnek exceli aşağıdaki linkten indirebilirsiniz. Excelde B kolonunda formülümüz çalıştığında sonucun nasıl olması gerektiğini manual olarak yazmış durumdayım.
Ayrıca araç model kalıplarının nasıl olduklarını da formüle uyarlayabilmeniz için E kolonunda belirttim. Araç Modeli kalıbı eğer 2 adet olsaydı kullanıyor olduğum formülü de G kolonunda belirttim.

 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Hücre içinde başka - yoksa aşağıdaki formülü deneyiniz:

=PARÇAAL(A2;BUL("-";A2)-3;8)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,228
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif olarak kullanıcı tanımlı fonksiyonla daha kolay çözüm üretilebilir.

Boş bir modüle uygulayınız.

C++:
Option Explicit

Function K_PARÇAAL(Veri As Range) As String
    Application.Volatile True
    
    With CreateObject("VBScript.RegExp")
        .Pattern = "\w{3}-\w{4}"
        .Global = True
        If .Test(Veri.Value) Then
            K_PARÇAAL = .Execute(Veri.Value)(0)
        End If
    End With
End Function
B2 hücresine =K_PARÇAAL(A2) yazıp deneyiniz.
 
Katılım
21 Aralık 2016
Mesajlar
722
Excel Vers. ve Dili
Office 365 TR
Selamlar,
Alternatif olarak formülle çözüm... Dosya ektedir incelersiniz...


Araç modelleri için kalıplar, sizin yazımlarınız F2X-XXXX şeklindeydi.... Bu yazımlar, F2?-???? şeklinde düzenlendi...
Formül : B2 hücresine (DİZİ formüldür)

=EĞERHATA(PARÇAAL(A2;MBUL(İNDİS($E$2:$E$7;KAÇINCI(9^99;MBUL($E$2:$E$7;A2)));A2);8);"")

Dosyada, bazı durumlarda elde edilecek farklılıklar da gösterilmeye çalışıldı....
 

Deniz_Excel

Altın Üye
Katılım
15 Mart 2016
Mesajlar
134
Excel Vers. ve Dili
MS Excel 2016
Altın Üyelik Bitiş Tarihi
23-10-2026
Selamlar,
Alternatif olarak formülle çözüm... Dosya ektedir incelersiniz...


Araç modelleri için kalıplar, sizin yazımlarınız F2X-XXXX şeklindeydi.... Bu yazımlar, F2?-???? şeklinde düzenlendi...
Formül : B2 hücresine (DİZİ formüldür)

=EĞERHATA(PARÇAAL(A2;MBUL(İNDİS($E$2:$E$7;KAÇINCI(9^99;MBUL($E$2:$E$7;A2)));A2);8);"")

Dosyada, bazı durumlarda elde edilecek farklılıklar da gösterilmeye çalışıldı....

Merhaba geç cevabım için kusura bakmayın. Formülünüz çalışıyor. Harika bir çözüm olmuş. Ancak buradaki araç kalıplarının biryerde yazılı bulunması durumunda çalışacak bir formül. Bu kalıplar olmadan direk olarak çalışacak bir formül yapısı da kuramaz mıyız?
 
Katılım
21 Aralık 2016
Mesajlar
722
Excel Vers. ve Dili
Office 365 TR
Merhaba geç cevabım için kusura bakmayın. Formülünüz çalışıyor. Harika bir çözüm olmuş. Ancak buradaki araç kalıplarının biryerde yazılı bulunması durumunda çalışacak bir formül. Bu kalıplar olmadan direk olarak çalışacak bir formül yapısı da kuramaz mıyız?
Selamlar,
Kalıpların varlığı, nelerin aranılacağının belirlenmesi amacını taşımasıdır.
Kalıplar olmadan neyin aranılacağının tam olarak bilinmesi gerekir. Örneğin "-" işareti ile çözüm önerisi yapıldı. Fakat aynı ibarede birden fazla "-" kullanılabileceği için çözüm geçerli olamıyor.
Eğer kalıplar olmadan çalışacak formül istiyorsanız, sorum şu ki, kalıbın yerine geçecek olan tanım tam olarak nedir?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Merhaba geç cevabım için kusura bakmayın. Formülünüz çalışıyor. Harika bir çözüm olmuş. Ancak buradaki araç kalıplarının biryerde yazılı bulunması durumunda çalışacak bir formül. Bu kalıplar olmadan direk olarak çalışacak bir formül yapısı da kuramaz mıyız?
Korhan Bey'in #4 nolu mesajdaki kullanımlı tanımlı fonksiyon önerisi işe yaramadı mı?
 

Deniz_Excel

Altın Üye
Katılım
15 Mart 2016
Mesajlar
134
Excel Vers. ve Dili
MS Excel 2016
Altın Üyelik Bitiş Tarihi
23-10-2026
Alternatif olarak kullanıcı tanımlı fonksiyonla daha kolay çözüm üretilebilir.

Boş bir modüle uygulayınız.

C++:
Option Explicit

Function K_PARÇAAL(Veri As Range) As String
    Application.Volatile True
   
    With CreateObject("VBScript.RegExp")
        .Pattern = "\w{3}-\w{4}"
        .Global = True
        If .Test(Veri.Value) Then
            K_PARÇAAL = .Execute(Veri.Value)(0)
        End If
    End With
End Function
B2 hücresine =K_PARÇAAL(A2) yazıp deneyiniz.


Korhan Bey merhaba, Makronuzu deneme fırsatım olmadığından yorum yapmamıştım. Çok güzel şekilde çalışıyor. Güzel bir çözüm olmuş. Ancak makro yapısında Global = True ifadesinin sağladığı özellik nedir anlayamadım. Açıklarsanız sevinirim.


Ek olarak kimsenin aklına gelmemiş ama şu şekilde bir formülünde istediğimi verdiğini farkettim

EĞERHATA(PARÇAAL(A7;MBUL("F2?-????";A7);8);EĞERHATA(PARÇAAL(A7;MBUL("K62-????";A7);8);EĞERHATA(PARÇAAL(A7;MBUL("K60-????";A7);8);EĞERHATA(PARÇAAL(A7;MBUL("14C-????";A7);8);EĞERHATA(PARÇAAL(A7;MBUL("15C-????";A7);8);PARÇAAL(A7;MBUL("D0?-????";A7);8))))))
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,228
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Birden fazla eşleşme varsa onları yakalamanızı sağlar.
 
Üst