• DİKKAT

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

Sağdan - Soldan ve Mbul VBA Kodu

Katılım
8 Aralık 2009
Mesajlar
44
Excel Vers. ve Dili
excel 2016
Merhaba arkadaşlar,

=SAĞDAN(SOLDAN(A1;MBUL("_";A1;1)-1);MBUL(" ";A1;1))

A1 hücresinde "2021 01 30 12345_ankarada hava durumu" şeklinde bir metin var. Metindeki "12345" olan kısmını, yani tarihten sonraki alt tireye kadar olan sayı kısmını yukarıdaki formül ile başka bir hücreye yazdırabiliyorum.

Bu formülü veya bu mantıkla çalışacak VBA koduna ihtiyacım var.
Yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
 
Merhaba,

Ben bu tarz işlemlerde MAKRO KAYDET yöntemini kullanıyorum. Excel bu aşamada formülde ki başvuru adreslerini R1C1 stilinde yazıyor. Sadece bunları hücre adresi şeklinde düzenleyerek daha anlamlı hale getiriyorum. Böylece okuması daha kolay oluyor.

Ham makro kaydet ile oluşan kod;

C++:
Sub Makro1()
'
' Makro1 Makro
'

'
    Range("C1").Select
    ActiveCell.FormulaR1C1 = _
        "=RIGHT(LEFT(RC[-2],SEARCH(""_"",RC[-2],1)-1),SEARCH("" "",RC[-2],1))"
    Range("C2").Select
End Sub


Benim yaptığım düzenleme;

Gereksiz satırları temizledikten sonra R1C1 stilindeki hücre adreslerini revize etttim. Ayrıca sadece sonucu göstersin diye EVALUATE özelliğini ekledim.

C++:
Sub Makro1()
    Range("C1") = Evaluate("RIGHT(LEFT(A1,SEARCH(""_"",A1,1)-1),SEARCH("" "",A1,1))")
End Sub

Aslında VBA tarafında farklı çözümlerde uygulanabilir. Eğer A1 hücresinde ki veriniz standart biçimde yazılıyorsa "Split" komutu da işinize yarayabilir. Forumda bununla ilgili bolca örnek var. Arama yaparsanız ulaşabilirsiniz.
 
Teşekkür ederim Koray bey Split komutunu araştırayım, olmasa yukarıdakini uygularım.
 
Denemek isterseniz alternatif

Kod:
Sub CumleAyir()
    
    Dim k As Long
    
    On Error Resume Next
    
    Application.ScreenUpdating = False
    
    For k = 1 To Cells(Rows.Count, "a").End(3).Row
        Cells(k, "B") = Split(Cells(k, "A"), "_")(0)
         Cells(k, "C") = Split(Cells(k, "A"), "_")(1)
    Next k
    
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz Tamam"
    
End Sub
 
Teşekkürler, halloldu
 
Geri
Üst