Hücrede Karışık Olan Sayı ve Metinleri Ayırma

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
A1 hücresi ve devamının bazılarında 1 bazılarında 2 satır olarak bulunan sayıların toplamını a2 hücresine yazmak istiyorum
Örnek;

A1 Hücresi​
Tür: Araç, Değer: 100000
Tür: Arsa, Değer: 70000

A2 Hücresi
170000

Şimdiden Teşekkür Ederim.
 
Katılım
28 Nisan 2010
Mesajlar
182
Excel Vers. ve Dili
2007 Türkçe
Altın Üyelik Bitiş Tarihi
15/10/2022
Örnek dosya paylaşabilir misiniz?
 

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,167
Excel Vers. ve Dili
Ofis 2019 Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2028
Kod:
Option Explicit

Function KTOPLA(Alan As Range)
    Dim Hucre As Range, Veri As Variant, X As Integer

    Application.Volatile True

    For Each Hucre In Alan
        Veri = Split(Hucre.Text, " ")
        For X = 0 To UBound(Veri)
            If IsNumeric(Veri(X)) Then
                KTOPLA = KTOPLA + CDbl(Veri(X))
            End If
        Next
    Next
End Function
=KTOPLA(A1) ' toplanacak hücre
veya
=KTOPLA(A1:A30) 'toplanacak aralık
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Kod:
Option Explicit

Function KTOPLA(Alan As Range)
    Dim Hucre As Range, Veri As Variant, X As Integer

    Application.Volatile True

    For Each Hucre In Alan
        Veri = Split(Hucre.Text, " ")
        For X = 0 To UBound(Veri)
            If IsNumeric(Veri(X)) Then
                KTOPLA = KTOPLA + CDbl(Veri(X))
            End If
        Next
    Next
End Function
=KTOPLA(A1) ' toplanacak hücre
veya
=KTOPLA(A1:A30) 'toplanacak aralık
Cevabınız için teşekkür ederim fakat benim dosyamda aynı hücre içerisinde farklı satırlarda değerler var. Göndermiş olduğunuz kodda sadece hücrenin en alt satırındaki değeri alıyor. Bunun için bir çözümünüz var mıdır?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,374
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

İstediğiniz elma ile armut toplamı gibi görünüyor buradan ama vardır bir mantığı deyip aşağıdaki Kullanıcı Tanımlı Fonksiyonunu deneyiniz.

Kullanımı : =RakamTopla(A1)

Kod:
Function RakamTopla(Rng As Range)

    Dim i   As Long, _
        j   As Integer, _
        a   As Variant, _
        b   As Variant, _
        t   As Variant, _
        Snc As Double
   
        a = Split(Rng, Chr(10))
       
        For j = 0 To UBound(a)
            b = Split(a(j), "Değeri: ")
            Snc = Snc + b(1)
        Next j
       
        RakamTopla = Snc
   
End Function
 
Son düzenleme:

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhaba,

İstediğiniz elma ile armut toplamı gibi görünüyor buradan ama vardır bir mantığı deyip aşağıdaki Kullanıcı Tanımla Fonksiyonunu deneyiniz.

Kullanımı : =RakamTopla(A1)

Kod:
Function RakamTopla(Rng As Range)

    Dim i   As Long, _
        j   As Integer, _
        a   As Variant, _
        b   As Variant, _
        t   As Variant, _
        Snc As Double
       
    For i = 1 To Cells(Rows.Count, "A").End(3).Row
   
        Snc = 0
        a = Split(Cells(i, "A"), Chr(10))
       
        For j = 0 To UBound(a)
            b = Split(a(j), "Değeri: ")
            Snc = Snc + b(1)
        Next j
       
        RakamTopla = Snc
       
    Next i
   
End Function
Ellerinize sağlık yapmak istediğim tam bu koddaki gibi fakat şöyle bir sorun var hücre içerisinde 3 satır olan yeri topluyor ve formülü uyguladığım bütün hücrelere aynı toplamı yazıyor. Yani benim örneğimde a2 hücresinde 2 tane veri var ve ben bunları toplamak için b2 hücresine formülü yazdığımda a3 hücresindeki sayıları toplayıp b2 hücresine yazıyor. Şimdiden teşekkür ederim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,374
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Tam olarak anlamadım, daha ayrıntılı örnekler misiniz?
Ya da sorununuzun olduğu örnek bir dosyayı paylaşırsanız çözüme daha hızlı ulaşabilirsiniz .

Pardon pardon kodları ilk yazdığımda döngü ile tüm veriye uyguluyordum, sonra Fonksiyona çevirince mantık aynı kalmış.
Kodları düzelttim, ilk mesajımdan tekrar ulaşabillirsiniz.
 
Son düzenleme:

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhaba,
Tam olarak anlamadım, daha ayrıntılı örnekler misiniz?
Ya da sorununuzun olduğu örnek bir dosyayı paylaşırsanız çözüme daha hızlı ulaşabilirsiniz .

Pardon pardon kodları ilk yazdığımda döngü ile tüm veriye uyguluyordum, sonra Fonksiyona çevirince mantık aynı kalmış.
Kodları düzelttim, ilk mesajımdan tekrar ulaşabillirsiniz.
Merhaba ilginiz için gerçekten teşekkür ederim. https://we.tl/t-xtSbVlCaJP linki üzerinden dosyayı indirebilirsiniz. İçerisinde açıklamayı yapmaya çalıştım. Bu uygulamada ki asıl amacım elimde bulunan yüzlerce kişinin mal varlığı değerlerini toplam olarak görebilmek.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Yanlış anlamadıysam aşağıdaki gibi bir sonuç istiyorsunuz.
@Necdet bey, müsadenizle kodunuzda küçük bir reviyoz yaptım.

C++:
Function RakamTopla(Rng As Range)
Dim j As Integer
Dim b   As Variant
Dim t As Variant
Dim Snc As Double
Snc = 0
    For j = 0 To UBound(Split(Cells(ActiveCell.Row, "A"), Chr(10)))
        b = Split(Split(Cells(ActiveCell.Row, "A"), Chr(10))(j), "Değeri: ")
        Snc = Snc + b(1)
    Next j
    RakamTopla = Snc
End Function
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhaba,

İstediğiniz elma ile armut toplamı gibi görünüyor buradan ama vardır bir mantığı deyip aşağıdaki Kullanıcı Tanımlı Fonksiyonunu deneyiniz.

Kullanımı : =RakamTopla(A1)

Kod:
Function RakamTopla(Rng As Range)

    Dim i   As Long, _
        j   As Integer, _
        a   As Variant, _
        b   As Variant, _
        t   As Variant, _
        Snc As Double
  
        a = Split(Rng, Chr(10))
      
        For j = 0 To UBound(a)
            b = Split(a(j), "Değeri: ")
            Snc = Snc + b(1)
        Next j
      
        RakamTopla = Snc
  
End Function
Yapmak istediğim tam olarak buydu. İlginize çok teşekkür ederim Necdet Bey. Kolaylıklar dilerim.
 
Üst