• DİKKAT

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

Hücre İçindeki Rakamları çıkarma

S.Yiğit

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2008
Mesajlar
1,748
Excel Vers. ve Dili
2019 TR
Selamlar..

Arşivimde bir excel sayfası var. Bu sayfada hücre içindeki sayıları çıkarmak için bir makro var. Zamanında kaydetmiştim ve üzerinde uğraşmıştım ama yarım kaldı. Şimdi lazım oldu ama çıkamadım içinden.

A1 hücresinde DF5S4D54 Olduğunu farzedersek B1 hücresine =sayim(A1) yazdığımda 5454 olarak sonuç vermesi gerekiyor.

Yardımcı olanlara şimdiden tşkler..
 

Ekli dosyalar

merhaba

bunu deneyiniz

Kod:
'kodları yazan : Korhan Ayhan
Function RAKAMAYIR(Hücre As Range)
    For X = 1 To Len(Hücre)
    If IsNumeric(Mid(Hücre, X, 1)) Then SONUÇ = SONUÇ & Mid(Hücre, X, 1)
    Next
    SONUÇ = IIf(SONUÇ = 0, "Rakam Bulunamadı!", SONUÇ * 1)
    RAKAMAYIR = SONUÇ
End Function

Function HARFAYIR(Hücre As Range)
    For X = 1 To Len(Hücre)
    If Not IsNumeric(Mid(Hücre, X, 1)) Then SONUÇ = SONUÇ & Mid(Hücre, X, 1)
    Next
    SONUÇ = IIf(SONUÇ = 0, "Harf Bulunamadı!", SONUÇ)
    HARFAYIR = SONUÇ
End Function
 
Sn uzmanamele hocam bunu benim çalışmama uyarlayıp yollar mısınız? Tşkler
 
Selamlar..

Arşivimde bir excel sayfası var. Bu sayfada hücre içindeki sayıları çıkarmak için bir makro var. Zamanında kaydetmiştim ve üzerinde uğraşmıştım ama yarım kaldı. Şimdi lazım oldu ama çıkamadım içinden.

A1 hücresinde DF5S4D54 Olduğunu farzedersek B1 hücresine =sayim(A1) yazdığımda 5454 olarak sonuç vermesi gerekiyor.

Yardımcı olanlara şimdiden tşkler..

Function sayim(hucre)
Dim i As Integer

For i = 1 To Len(hucre)
sayi = Mid(hucre, i, 1)
If IsNumeric(sayi) = True Then
sayim = sayim & sayi
End If
Next i
End Function

şeklindeki KTF'yi neden Class module'nin içine yazdınız? Bunu normal Module'nin içine yazarsanız çalışır.

.
 
Function sayim(hucre)
Dim i As Integer

For i = 1 To Len(hucre)
sayi = Mid(hucre, i, 1)
If IsNumeric(sayi) = True Then
sayim = sayim & sayi
End If
Next i
End Function

şeklindeki KTF'yi neden Class module'nin içine yazdınız? Bunu normal Module'nin içine yazarsanız çalışır.

.

Sn yurttas hocam sorunda burda Makroda sıfırım hatta eksideyim. Nasıl yapılacağını bilmiyorum.. Excele sıfırdan başladım. Şimdilik fonksiyonları öğrenmeye çalışıyorum. Bu çalışmada lazım oldu. Kusura bakmayın..
 

Sn yurttas tşkler.

Bende kısaca yaptığımı yazayım.

Tools / Macro / Visual Basic Editör

Açılan sayfada sol üstte bulunan insert Userform'dan Modul ve yine tekrar açılan sayfaya olduğu gibi kodları yapıştırdım ve ctrl s yapıp kaydettim. Daha sonra sayfayı kapatıp tekrar açtım. A1 hücresine DF4DFS5DF yazdım ve B1 e =sayim(A1) yazdım ama olmadı :dusun:
Yanlız bunları yaparken sıfırdan sayfa açtım içi boştu.
Excelimde İngilizce. hatam Nerede acaba?
 

sayın yurttas kolay gelsin
Bu konu baslıgında bir cok farklı konuları araaştırdım hep aynı sonuc var.
bir hücredeki veriden metin ile sayıyı ayırmak için bir hücreye =sayim(a1) olarak verilmiş formül ve buna göre de kod yazılmış
sormak istediğim a1 hücresinde aadd123 yazıyorsa b1 hücresine sadece 123 yazan direk bir kod yok mu
 
. . .

Dosya ektedir.

İşlem Sonucu:
attachment.php


Kod:
Sub KOD()
Application.ScreenUpdating = False
Dim alan As Range

Range("B:B").ClearContents

For Each alan In Range("A1:A" & [A65536].End(3).Row)

If Not IsNumeric(alan.Value) Then

For i = 1 To Len(alan.Text)
sayi = Mid(alan.Text, i, 1)
If IsNumeric(sayi) = True Then
sayim = sayim & sayi
End If
Next i

alan.Offset(0, 1) = sayim
sayim = Empty
Else
alan.Offset(0, 1) = alan.Value
End If

Next alan

Application.ScreenUpdating = True
MsgBox " B i t t i"
End Sub

. . .
 

Ekli dosyalar

  • 1_02.jpg
    1_02.jpg
    26.4 KB · Görüntüleme: 26
  • Örnek_01.rar
    Örnek_01.rar
    10.9 KB · Görüntüleme: 8
Alternatif;

Kod:
Sub Rakam_Ayır()
    Dim Rky As Object, Evn As Range
    Set Rky = CreateObject("VBScript.Regexp")
    With Rky
        .Global = True
        .Pattern = "\d+"
    End With
    For Each Evn In Range("A1:A5")
        yaz = ""
        For Each i In Rky.Execute(Evn.Value)
            yaz = yaz & i
        Next
        Evn.Offset(0, 1).Value = yaz
    Next
    Set Rky = Nothing: Set Evn = Nothing
End Sub
 
Sayın murat bey öncelikle katkılarınız için teşekkürler.
Ancak verdiğiniz kodlarda bir konuda problem çıkıyor, bu nasıl çözülebilir?
Örneğin hücrede 58,65 yazıyorsa kod sadece rakamları aldığı için 5865 oluyor.
Bu kodun sayıların arasındaki virgül ve (veya) noktayı da almasını sağlayabilir miyiz?
 
Pattern satırını bu şekilde değiştirip deneyiniz;
Kod:
.Pattern = "\d,*"
 
Rica ederim, iyi günler.
 
Geri
Üst