• DİKKAT

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

Metin ve Sayıları Ayıklama

Katılım
1 Aralık 2013
Mesajlar
44
Excel Vers. ve Dili
2007
Merhaba arkadaşlar. Paylaştığım resimdeki gibi, her hücrede önce rakamlardan sonra harflerden oluşan bazı değerler var. "Metni sütunlara dönüştür" ile bunları ayıklayamıyorum. Çünkü aralarında sabit bir boşluk ya da sabit bir karakter yok. Bazen üç rakam bir harf, bazen bir rakam üç harf şeklinde karışık... Bu sayıları ve metinleri ayrı hücrelere nasıl ayıklarım? Yardımlarınız için teşekkürler.
 
Kod:
Sub ayikla()
    Dim hücre As Range
    Dim metin As String, sayilar As String, harfler As String
    Dim i As Long, karakter As String

    For Each hücre In Selection
        metin = hücre.Value
        sayilar = ""
        harfler = ""
        
        For i = 1 To Len(metin)
            karakter = Mid(metin, i, 1)
            If karakter Like "[0-9]" Then
                sayilar = sayilar & karakter
            ElseIf karakter Like "[A-Za-z]" Then
                harfler = harfler & karakter
            End If
        Next i
        
        hücre.Offset(0, 1).Value = sayilar
        hücre.Offset(0, 2).Value = harfler
    Next hücre
End Sub

Modül ekleyerek buton yardımı ile yapabilirsin ve kod üsttedir. Hücre veya sütunü komple seçtiğinde sağ tarafına istemiş olduğun gibi ayıklama yapacaktır. İyi forumlar
 
Üstat cidden harika bir iş çıkarmışsın, eline koluna sağlık. Tek tıkla ayırdı hepsini! Çok teşekkürler!
 
Rica ederim. Ne mutlu bana..
 
Alternatifler...

Eğer kullandığınız sürüm güncelse (Flash Fill-Hızlı Doldur-Ctrl+E) seçeneği ile ek bir işleme gerek kalmadan verilerinizi hızlıca ayırabilirsiniz.

Örnek tablonuza göre B1 hücresine 161 yazınız. C1 hücresine SSE yazınız. Sırayla B2 hücresini seçip CTRL+E tuşlarına basınız. Sonra C2 hücresini seçip yine aynı tuş kombinasyonu ile verileri ayırabilirsiniz. (Bazı sürümlerde bu tuş kombinasyonu çalışmayabiliyor. Bu durumda VERİ-HIZLI DOLDUR seçeneğini kullanabilirsiniz.)

Bir diğer yöntem ise formülle çözüm;

B1;
C++:
=SOLDAN(A1;KAÇINCI(DOĞRU;EHATALIYSA(--PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1));0)-1)

C1;
C++:
=YERİNEKOY(A1;B1;"")


Ofis 365 için B1 hücresine uygulamanız yeterli olacaktır.. Sonuçlar dökülmeli olarak listelenir.

C++:
=NORMİFADEAYIKLA(A1;{"^\d+";"[A-Za-z]+$"})
 
Alternatif olsun, fonksiyon ile

A1 de veri olduğunu varsayarak :
B1 :
Kod:
=PARÇAAL(A1;KAÇINCI(0;(EHATALIYSA(PARÇAAL(A1;SATIR(DOLAYLI("1:"& UZUNLUK(A1)));1)*1)*1);0);UZUNLUK(A1)-TOPLA((EHATALIYSA(PARÇAAL(A1;SATIR(DOLAYLI("1:"&UZUNLUK(A1)));1)*1)*1)))
Dizi Formüldür. Formülü yazdıktan sonra Ctrl+Shift+Enter ile formülü bitirmek gerek
C1:
Kod:
=YERİNEKOY(A1;B1;"")
 
Cevaplar için çok teşekkür ederim arkadaşlar. Korhan hocam bahsettiğiniz "Hızlı doldur" yöntemi çok uzun veri setlerimde maalesef hatalı sonuçlar verdi. Nedenini bilmiyorum. Formüllerde problem yok. Onlar çalışıyor. Ofis 365'li olanı ise bende olmadığı için deneyemedim. Teşekkürler tekrardan.
 
Ekran görüntüsünü göremedim.

258447

Bu şekilde ise

B1

Kod:
=ARA(9,99999999999999E+307;--SOLDAN(A1;SATIR($1:$1024)))

C1

Kod:
=YERİNEKOY(A1;B1;"")
 
Geri
Üst