• DİKKAT

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

Banka Açıklama Kısmından İsim Soyisimi Almak

Katılım
17 Nisan 2024
Mesajlar
4
Excel Vers. ve Dili
Excel, Power BI
Merhaba, Banka ekstrelerinden sadece isimlerini yan sütuna almak istiyorum ve virman açıklamalarının ise aynı şekilde gelmesini istiyorum.
Örneğin:
Aşağıdaki gibi sıralanan bir banka ekstresi var. Yan hücreye Sadece isim soy isimlerin geçmesini istiyorum, virmanların ise aynı kalmasını.
Şöyle düşündüm, virman hücreleri her zaman sayı ile başlıyor, o yüzden eğer formülünü kullanarak "hücre eğer sayı ile başlıyorsa, doğru ise hücreyi al yanlış ise, (yani diğer hücreler için, birinci boşluktan üçüncü boşluk arası parça al, kes.." diye bir formül kurguladım fakat yapamadım, yardımcı olur musunuz?


SN:8949866 Ahmet Yılmaz Elif Kaya GönBanka:46 FastRef:2518242 Fast Otomatik Muhasebe

SN:7039624 Murat Öztürk Ayşe Demir GönBanka:205 FastRef:2555977 Fast Otomatik Muhasebe

60 NOLU HESABIN 76 NOLU HESABA VİRMANI 56 - 2510774 - 76 Hesaba Virman

SN:813281499 Fatma Arslan GönBanka:111 FastRef:2506351 Fast Otomatik Muhasebe

60 NOLU HESABIN 76 NOLU HESABA VİRMANI 56 - 2510774 - 76 Hesaba Virman
 
Merhaba,
Yazdığınız mantığa göre formülünüz aşağıdadır, ancak çift isimlerde istediğiniz sonucu alamazsınız.
Kod:
=EĞER(ESAYIYSA(--SOLDAN(A1;1));A1;DEĞİŞTİR(DEĞİŞTİR(A1;BUL("#";YERİNEKOY(A1;" ";"#";3));UZUNLUK(A1);"");1;BUL(" ";A1);""))

Eğer her satırda GönBanka ifadesi varsa aşağıdaki şekilde daha doğru sonuç elde edersiniz.
Kod:
=EĞER(ESAYIYSA(--SOLDAN(A1;1));A1;DEĞİŞTİR(DEĞİŞTİR(A1;BUL("#";YERİNEKOY(A1;" Gön";"#"));UZUNLUK(A1);"");1;BUL(" ";A1);""))
 
Merhaba,
Deneyiniz.
Kod:
=EĞERHATA(PARÇAAL(PARÇAAL(A1;BUL(" ";A1)+1;UZUNLUK(A1));1;BUL("Gön";PARÇAAL(A1;BUL(" ";A1)+1;UZUNLUK(A1)))-1);A1)
 
Merhaba,
Yazdığınız mantığa göre formülünüz aşağıdadır, ancak çift isimlerde istediğiniz sonucu alamazsınız.
Kod:
=EĞER(ESAYIYSA(--SOLDAN(A1;1));A1;DEĞİŞTİR(DEĞİŞTİR(A1;BUL("#";YERİNEKOY(A1;" ";"#";3));UZUNLUK(A1);"");1;BUL(" ";A1);""))

Eğer her satırda GönBanka ifadesi varsa aşağıdaki şekilde daha doğru sonuç elde edersiniz.
Kod:
=EĞER(ESAYIYSA(--SOLDAN(A1;1));A1;DEĞİŞTİR(DEĞİŞTİR(A1;BUL("#";YERİNEKOY(A1;" Gön";"#"));UZUNLUK(A1);"");1;BUL(" ";A1);""))


Çok teşekkür ederim büyük ölçüde çözüldü, Ayrıca her satırda "GönBanka" var mı diye sormuştunuz, bazı satırlarda "Açıklama" var. ama formül yine de doğru çalışıyor.
fakat;
bazı virman satırları "VİRMAN" olarak başladığı için formül onu da parçalıyor. Onu nasıl yapabiliriz?
örneğin:

56 2510774 76 Nolu Hesaba Transfer

SN:1034623474 BÜŞRA HASAN Açıklama: Karaca GönBanka:15 FastRef:2516071 Fast Otomatik Muhasebe

VİRMAN 56 - 2510774 - 47 Hesaba Virman
çıktı:

56 2510774 76 Nolu Hesaba Transfer

BÜŞRA HASAN

56 -
 
Son düzenleme:
Merhaba,
Deneyiniz.
Kod:
=EĞERHATA(PARÇAAL(PARÇAAL(A1;BUL(" ";A1)+1;UZUNLUK(A1));1;BUL("Gön";PARÇAAL(A1;BUL(" ";A1)+1;UZUNLUK(A1)))-1);A1)

içeriğinde "açıklama" olan satırlarda sonuca açıklama ada aldı :(
örneğin aşıdaki satıra formül eklediğimde sonuç sadece "Emre GÜRBÜZ" olmasını isterken, "Emre GÜRBÜZ Açıklama: Emre GÜRBÜZ" veriyor


SN:2645131842 Emre GÜRBÜZ Açıklama: Emre GÜRBÜZ GönBanka:10 FastRef:2513071 Fast Otomatik Muhasebe








 
Son düzenleme:
bazı virman satırları "VİRMAN" olarak başladığı için formül onu da parçalıyor. Onu nasıl yapabiliriz?
Kod:
=EĞER(YADA(ESAYIYSA(--SOLDAN(A1;1));SOLDAN(A1;6)="VİRMAN");A1;DEĞİŞTİR(DEĞİŞTİR(A1;BUL("#";YERİNEKOY(A1;" ";"#";3));UZUNLUK(A1);"");1;BUL(" ";A1);""))
 
Veriler A2 hücresinden başlayarak aşağıya doğru devam ediyorsa, alternatif olarak VBA'de "Regular Expressions" kullanarak bu iş yapılabilir;

C#:
Sub Test()
'   Haluk - 17/04/2024
    Dim NoA As Long
    Dim regExp As Object
    Dim myStr As String, i As Long

    NoA = Range("A" & Rows.Count).End(xlUp).Row
    Range("B2:B" & NoA) = ""

    Set regExp = CreateObject("VBScript.RegExp")

    regExp.IgnoreCase = True
    regExp.Global = True
    regExp.Pattern = "(SN:\d+)\s*(.+?)\s*(GönBanka|Açıklama)"

    For i = 2 To NoA
        myStr = Range("A" & i)
        If regExp.Test(myStr) Then
            Range("B" & i) = regExp.Execute(myStr)(0).submatches(1)
        End If
    Next

    Set regExp = Nothing
End Sub



Screenshot.png


.
 
Son düzenleme:
Sorunuz çözülmüş buna sevindim. Ancak tüm olasılıkları baştan yazmalısanız, ilk mesajda açıklama ile ilgili örnek yok.
İyi çalışmalar.
 
Geri
Üst