• DİKKAT

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

Soru Rakamla harfleri ayırma

Katılım
9 Temmuz 2004
Mesajlar
427
Excel Vers. ve Dili
Office 2007 Tr & Office 2019 Tr
Elimde yaklaşık 1500 satırlık bir liste var. Rakamla başlıyor fakat bazıları 2 haneli bazıları daha fazla 5 haneli kadar oluyor. Birde iki veri arasında sadece harfle girilen veriler var. Öncelikle sadece harfle girilen veriler ayıklanacak daha sonra kalan 23423Asder... gibi olan veriler rakamlardan ayrılıp liste oluşacak. Sanırım kodla yapılabilecek. Örnek dosya EK tedir. Dedim ama dosya yükleyemedim. Şimdiden teşekkürler.
 
Hızlı Doldurma (Flash Fill) ile yapabilirsiniz.
 
[TR][TD]

[/TD][/TR]
[TR][TD]
Sayın muratboz06 güzel bir özellikmiş verdiğiniz örnek, fakat benim isteğime uymadı. Benim listemde altalta olan verilerin hepsi yazılmayacak sadece önünde rakam olan veriler yazılacak.
[/TD][/TR]
 
Regular Expressions ile VBA'de yapılır ama Google Sheets'de çok daha kolay ;



.
 
Sadece harfleri almak için
=YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(A1;0;"");1;"");2;"");3;"");4;"");5;"");6;"");7;"");8;"");9;"")



Sadece sayıları almak için

=--YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(YERİNEKOY(BÜYÜKHARF(A1);"A";"");"B";"");"C";"");"Ç";"");"D";"");"E";"");"F";"");"G";"");"Ğ";"");"H";"");"I";"");"İ";"");"J";"");"K";"");"L";"");"M";"");"N";"");"O";"");"Ö";"");"P";"");"Q";"");"R";"");"S";"");"Ş";"");"T";"");"U";"");"Ü";"");"V";"");"W";"");"X";"");"Y";"");"Z";"")


verinin A1 hücresinde olduğu varsayılmıştır
 
3110Ada doğanı
fghgh
löol
ğpp
5880Ada martısı
çvjhj
mn mn
10090Ağaç incirkuşu
Tsingy
12370Ağaç kamışçını
rousettus
........
.......
----------------------------------
Ada doğanı
Ada martısı
Ağaç incirkuşu
Ağaç kamışçını
......
........

Bu şekilde olacak, arada kalanlar silinecek.
 
A sütunundaki verilerinizi B sütununa listeler.

Deneyiniz.

C++:
Option Explicit

Sub Sayi_Icerenleri_Yana_Aktar()
    Dim Veri As Variant, Son As Long, X As Long, Say As Long, Zaman As Double
    
    Zaman = Timer
    
    Range("B:B").ClearContents
    
    Son = Cells(Rows.Count, 1).End(3).Row
    If Son = 1 Then Son = 2
    
    Veri = Range("A1:A" & Son).Value
    
    ReDim Liste(1 To Son, 1 To 1)
    
    With CreateObject("VBScript.RegExp")
        .IgnoreCase = True
        .Global = True
        .Pattern = "[0-9]+"
        For X = LBound(Veri, 1) To UBound(Veri, 1)
            If IsNumeric(Left(Veri(X, 1), 1)) Then
                Say = Say + 1
                Liste(Say, 1) = .Replace(Veri(X, 1), "")
            End If
        Next
    End With
    
    If Say > 0 Then Range("B1").Resize(Say) = Liste
    
    MsgBox "İşleminiz tamamlanmıştır." & vbLf & vbLf & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
6. mesajdaki açıklamalar doğrultusunda, "Google Sheets" ile alternatif;




.
 
Sayın Korhan Ayhan çok teşekkür ederim istediğim tam olarak buydu 908 adet satırı 0.04 sn de ayıklayıp sıraladı. Allah razı olsun.
 
Sayın Haluk dediğiniz uygulamayı bilmiyorum ama bunu da incelemeye başlayacağım çok teşekkür ederim ilginizden dolayı.
 
A sütunundaki verilerinizi B sütununa listeler.

Deneyiniz.

C++:
Option Explicit

Sub Sayi_Icerenleri_Yana_Aktar()
    Dim Veri As Variant, Son As Long, X As Long, Say As Long, Zaman As Double
   
    Zaman = Timer
   
    Range("B:B").ClearContents
   
    Son = Cells(Rows.Count, 1).End(3).Row
    If Son = 1 Then Son = 2
   
    Veri = Range("A1:A" & Son).Value
   
    ReDim Liste(1 To Son, 1 To 1)
   
    With CreateObject("VBScript.RegExp")
        .IgnoreCase = True
        .Global = True
        .Pattern = "[0-9]+"
        For X = LBound(Veri, 1) To UBound(Veri, 1)
            If IsNumeric(Left(Veri(X, 1), 1)) Then
                Say = Say + 1
                Liste(Say, 1) = .Replace(Veri(X, 1), "")
            End If
        Next
    End With
   
    If Say > 0 Then Range("B1").Resize(Say) = Liste
   
    MsgBox "İşleminiz tamamlanmıştır." & vbLf & vbLf & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
Üstad eline sağlık, harika bir kod. Acaba biraz daha geliştirmek mümkün mü ?
* Kod sayı ile başlarsa çalışıyor. Sayı ve harfler karışık olsa da veya sayılar sağda olsa
* Sayılar C sütununa yazdırılabilir mi
 
Deneyiniz.

C++:
Option Explicit

Sub Sayi_Icerenleri_Yana_Aktar()
    Dim Veri As Variant, Son As Long, X As Long, Say As Long, Zaman As Double
    
    Zaman = Timer
    
    Range("B:C").ClearContents
    
    Son = Cells(Rows.Count, 1).End(3).Row
    If Son = 1 Then Son = 2
    
    Veri = Range("A1:A" & Son).Value
    
    ReDim Liste(1 To Son, 1 To 2)
    
    With CreateObject("VBScript.RegExp")
        .IgnoreCase = True
        .Global = True
        For X = LBound(Veri, 1) To UBound(Veri, 1)
            If IsNumeric(Left(Veri(X, 1), 1)) Then
                Say = Say + 1
                .Pattern = "[0-9]+"
                Liste(Say, 1) = .Replace(Veri(X, 1), "")
                .Pattern = "[^0-9]+"
                Liste(Say, 2) = .Replace(Veri(X, 1), "")
            End If
        Next
    End With
    
    If Say > 0 Then Range("B1").Resize(Say, 2) = Liste
    
    MsgBox "İşleminiz tamamlanmıştır." & vbLf & vbLf & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
Sayın Haluk dediğiniz uygulamayı bilmiyorum ama bunu da incelemeye başlayacağım çok teşekkür ederim ilginizden dolayı.

11. mesajda önerdiğim Google Sheets alternatifinin açıklamalı uygulaması için kişisel blog'umu ziyaret edebilirsiniz.



.
 
Alternatif;

C#:
Sub sayilari_cikar()
   Application.ScreenUpdating = False
   Range("B:B").ClearContents
   For i = 1 To Cells(Rows.Count, "A").End(3).Row
      gec = Cells(i, "A").Value
      If InStr(gec, "0") > 0 Or InStr(gec, "1") > 0 Or InStr(gec, "2") > 0 Or InStr(gec, "3") > 0 Or InStr(gec, "4") > 0 Or InStr(gec, "5") > 0 Or InStr(gec, "6") > 0 Or InStr(gec, "7") > 0 Or InStr(gec, "8") > 0 Or InStr(gec, "9") > 0 Then
        Cells(i, "B").Value = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(gec, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
      End If
   Next i
   Range("B:B").Sort key1:=Range("B1"), order1:=xlAscending
   Application.ScreenUpdating = True
End Sub
 
Excelde bu kodları uyguladığımda tüm veriler siliniyor özel karakterlerden oluşan isimler var ondan dolayı mı acaba
 
Excelde bu kodları uyguladığımda tüm veriler siliniyor özel karakterlerden oluşan isimler var ondan dolayı mı acaba

Ne yapmak istiyorsunuz?
Örnek bir hücre verisi ve olmasını istediğiniz sonuç verisini yazabilir misiniz?
 
Geri
Üst