• DİKKAT

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

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

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
36
Excel Vers. ve Dili
Office 2019 EN 32 Bit
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.
 
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
 
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?
 
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:
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.
 
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:
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.
 
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
 
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.
 
Geri
Üst