Metin içeren hücredeki sayıları toplama

Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
İyi günler. Metin ve sayılar içeren hücrelerdeki sayıları toplamak istiyorum. Örneğin A2 hücresinde "kalem 500 silgi 300 defter 250" ibaresi var. Ben bu A2 hücresindeki 500,300,250 sayılarının toplanmasını istiyorum. Yardımlarınız için teşekkürler.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Alternatif olsun.

Eğer VBA ile yapmak isterseniz , dosyanıza yeni bir Module ekleyip aşağıdaki kodu kopyalayın.

Kod:
Public Function ToplaRakam(txt As String) As Double
    Dim prc As Variant
    Dim Bak As Integer
    prc = Split(txt, " ")
    For Bak = 0 To UBound(prc)
        If IsNumeric(prc(Bak)) Then
            ToplaRakam = ToplaRakam + prc(Bak)
        End If
    Next
End Function
Kullanımı, Excel sayfasında normal bir fonksiyon gibi kullanacaksınız.
Metnin A1 de yazdığını var sayarsak.
Kod:
=ToplaRakam(A1)
 

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,627
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
Aşağıdaki kodu
Alt+F11 e basıp kod penceresinde bir modül ekleyip fonksiyonu oraya yapıştırın
ardından toplamını almak istediğiniz hücreye =SumNumbers(A1) yazıp deneyin buradaki A1 sayı ve metinlerin birlikte yazıldığı hücredir
Kod:
Function SumNumbers(rngS As Range, Optional strDelim As String = " ") As Double
    Dim xNums As Variant, lngNum As Long
    xNums = Split(rngS, strDelim)
    For lngNum = LBound(xNums) To UBound(xNums) Step 1
        SumNumbers = SumNumbers + Val(xNums(lngNum))
    Next lngNum
End Function
 
Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Merhaba.
Alternatif olsun.

Eğer VBA ile yapmak isterseniz , dosyanıza yeni bir Module ekleyip aşağıdaki kodu kopyalayın.

Kod:
Public Function ToplaRakam(txt As String) As Double
    Dim prc As Variant
    Dim Bak As Integer
    prc = Split(txt, " ")
    For Bak = 0 To UBound(prc)
        If IsNumeric(prc(Bak)) Then
            ToplaRakam = ToplaRakam + prc(Bak)
        End If
    Next
End Function
Kullanımı, Excel sayfasında normal bir fonksiyon gibi kullanacaksınız.
Metnin A1 de yazdığını var sayarsak.
Kod:
=ToplaRakam(A1)
hocam çok teşekkür ederim. fakat ben çalışma kitabımdaki ANA SAYFA adlı sayfanın V sütunundaki hücreler için bu formülü kullanmak istiyorum. O şekilde uyarlayabilirmiyiz.
 
Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Aşağıdaki kodu
Alt+F11 e basıp kod penceresinde bir modül ekleyip fonksiyonu oraya yapıştırın
ardından toplamını almak istediğiniz hücreye =SumNumbers(A1) yazıp deneyin buradaki A1 sayı ve metinlerin birlikte yazıldığı hücredir
Kod:
Function SumNumbers(rngS As Range, Optional strDelim As String = " ") As Double
    Dim xNums As Variant, lngNum As Long
    xNums = Split(rngS, strDelim)
    For lngNum = LBound(xNums) To UBound(xNums) Step 1
        SumNumbers = SumNumbers + Val(xNums(lngNum))
    Next lngNum
End Function
hocam eksik olmayın sağolun. Yukardaki cevabda da yazdım ama aslen ben çalışma kitabımdaki ANA SAYFA adlı sayfanın V sütunundaki hücreler için bu formülü kullanmak istiyorum. O şekilde çalışırmı kodlar yani tüm sayfayı mı içeriyor. Birde ben bu kodları başka sayfa da bulup dediğiniz gibi modül ekleyip denedim ama olmamıştı.
 
Katılım
16 Kasım 2017
Mesajlar
255
Excel Vers. ve Dili
office professional plus 2021
Merhaba.
Alternatif olsun.

Eğer VBA ile yapmak isterseniz , dosyanıza yeni bir Module ekleyip aşağıdaki kodu kopyalayın.

Kod:
Public Function ToplaRakam(txt As String) As Double
    Dim prc As Variant
    Dim Bak As Integer
    prc = Split(txt, " ")
    For Bak = 0 To UBound(prc)
        If IsNumeric(prc(Bak)) Then
            ToplaRakam = ToplaRakam + prc(Bak)
        End If
    Next
End Function
Kullanımı, Excel sayfasında normal bir fonksiyon gibi kullanacaksınız.
Metnin A1 de yazdığını var sayarsak.
Kod:
=ToplaRakam(A1)
Evet hocam şimdi denedim oldu. Çok sağolun eksik olmayın. Çok işime yaradı.
 

akara.88

Altın Üye
Katılım
23 Mayıs 2016
Mesajlar
63
Excel Vers. ve Dili
2013 TR
Altın Üyelik Bitiş Tarihi
12.10.2026
Merhaba

2020 yılında buna benzer bir talep gelince Ek 'teki dosyayı hazırlamıştık.
Dosyanız EK 'tedir.

Selamlar...
Merhaba,
Kullanıcı tanımlı bu formülü formüllerim içerisinde göstermek için ne yapmalıyım? Bunun eklenti şekli mevcut mu?
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
Sayın: @Muzaffer Ali , Sayın : @yanginci34 verdiğiniz kodlar belli bir satırdan sonrasını yanlış topluyor.
Verdiğiniz kodlarda nereleri düzeltmemiz gerekir?

Saygılar

Ekran Alıntısı.JPG
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,513
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
Merhaba,
Kullanıcı tanımlı bu formülü formüllerim içerisinde göstermek için ne yapmalıyım? Bunun eklenti şekli mevcut mu?
Merhaba

Mesajınızı yeni farkettim. Makro kaydet yöntemiyle kişisel Makro çalışma kitabı seçeneğini seçerek Makro kaydettiğiniz de kendi Personel dosyanız oluşur. Bu dosyaya kaydettiğiniz makrolar ve kullanıcı tanımlı fonksiyonları bilgisayarınızdaki tüm Excel dosyalarında kullanabilirsiniz.

Selamlar...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,307
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@Mdemir63,

Linkte alternatif çözümler var. İnceleyebilirsiniz.

 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
@Mdemir63,

Linkte alternatif çözümler var. İnceleyebilirsiniz.

Selamlar

@Korhan Ayhan Hocam
verdiğiniz linkteki kodlarınızı ekteki dosyaya modül içine kopyalayıp denedim. Ama ADET olanları doğru topluyor, Kilogram olanları ve toplamı yanlış topluyor sanırım. Yoksa ben mi hata yapıyorum. Ekteki dosyaya bakma şansınız var mı?

Saygılar
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,307
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodu aşağıdaki gibi revize edip deneyiniz.

C++:
Option Explicit

Sub Birime_Gore_Topla()
    Dim Veri As Variant, Son As Long, X As Long, Kriter As Variant, Y As Integer, Zaman As Double
    Dim Toplam_Adet As Double, Toplam_Kg As Double, Toplam As Double, Miktar As Double
   
    Zaman = Timer
   
    Son = Cells(Rows.Count, 1).End(3).Row
    If Son = 1 Then Son = 2
   
    Veri = Range("A1:A" & Son).Value
   
    For X = LBound(Veri) To UBound(Veri)
        If Veri(X, 1) <> "" Then
            If InStr(1, Veri(X, 1), "ADET") > 0 Then
                Kriter = Split(Veri(X, 1), "ADET")
                For Y = LBound(Kriter) To UBound(Kriter)
                    If Left(Kriter(Y), 1) = "," Then
                        Miktar = Mid(Kriter(Y), 2, Len(Kriter(Y)))
                    Else
                        Miktar = IIf(Kriter(Y) = "", 0, Kriter(Y))
                    End If
                    Toplam_Adet = Toplam_Adet + Miktar
                Next
            ElseIf InStr(1, Veri(X, 1), "KİLOGRAM") > 0 Then
                Kriter = Split(Veri(X, 1), "KİLOGRAM")
                For Y = LBound(Kriter) To UBound(Kriter)
                    If Left(Kriter(Y), 1) = "," Then
                        Miktar = Mid(Kriter(Y), 2, Len(Kriter(Y)))
                    Else
                        Miktar = IIf(Kriter(Y) = "", 0, Kriter(Y))
                    End If
                    Toplam_Kg = Toplam_Kg + Miktar
                Next
            Else
                Kriter = Split(Veri(X, 1), " ,")
                For Y = LBound(Kriter) To UBound(Kriter)
                    If Left(Kriter(Y), 1) = "," Then
                        Miktar = Mid(Kriter(Y), 2, Len(Kriter(Y)))
                    Else
                        Miktar = IIf(Kriter(Y) = "", 0, Kriter(Y))
                    End If
                    Toplam = Toplam + IIf(Kriter(Y) = "", 0, Kriter(Y))
                Next
            End If
        End If
    Next
   
    Range("C1") = "Toplam"
    Range("C2") = "Toplam_Adet"
    Range("C3") = "Toplam_Kg"
   
    Range("D1") = Toplam
    Range("D2") = Toplam_Adet
    Range("D3") = Toplam_Kg
   
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

Teşekkürler hocam
Elinize sağlık
 
Üst