• DİKKAT

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

Soru Bir Hücrede Bulunan Parantez İçindeki Sayıların Toplamını Alma

Katılım
28 Şubat 2017
Mesajlar
4
Excel Vers. ve Dili
2013
Merhaba Hocalarım, Konu Başlığından da anlaşılacağı üzere Bir Hücrede Bulunan Parantez İçindeki Sayıların Toplamını Alıp Başka Bir Hücreye Yazdırmak İstiyorum.

Örnek Excel Tablom Şu Şekildedir.



Buraya Sağdaki parantez İçindeki (1da)+(40da)+(120da) toplamını yazdırmak istiyorum yani Bu Hücrede "161" yazmalıdır sayılar örnek amaçlı verilmiştir.

5452112154Muhammed Enes (1da)+ 53806631978 Nedim K.(40da)+ 54134615592Sinan K.(120da)

Kod:
=PARÇAAL(I9;BUL("(";I9)+1;BUL("da)";I9)-BUL("(";I9)-1)

Bu Kod İle Bir Sayılardan Birisine ulaşıyorum Ama İlerletemedim Toplama İşlemi İçin

Yardımlarınızdan dolayı çok teşekkür ederim.
 
Sub Toplam()
dim son_satir as long
son_satir = Cells(Rows.Count, "B").End(xlUp).Row

dim toplam as long
toplam = 0

for satir = 1 to son_satir
dim veri as string
veri = Range("B" & satir).Value

dim parcalar() as string
parcalar = split(veri, "+")

for i = 0 to ubound(parcalar)
dim sayi as string
sayi = trim(split(parcalar(i), "(")(1))
sayi = left(sayi, len(sayi)-1)
toplam = toplam + cint(sayi)
next i

Range("A" & satir).Value = toplam
next satir
End Sub
 
Hocam İlginize Çok Teşekkür Ederim, Ama Kodda Hata Aldım Acaba Neden Kaynaklıdır Tam VBA Bilmemekle Birlikte Debug Kısmında

Kod:
Sub toplam()
Dim son_satir As Long
son_satir = Cells(Rows.Count, "B").End(xlUp).Row

Dim toplam As Long
toplam = 0

For satir = 1 To son_satir
Dim veri As String
veri = Range("B" & satir).Value

Dim parcalar() As String
parcalar = Split(veri, "+")

For i = 0 To UBound(parcalar)
Dim sayi As String
sayi = Trim(Split(parcalar(i), "(")(1))         /// Bu kısım sarı renkle uyarı vermekte
sayi = Left(sayi, Len(sayi) - 1)
toplam = toplam + CInt(sayi)
Next i

Range("A" & satir).Value = toplam
Next satir
End Sub

Hata Olarak Bu Şekilde Görmekteyim Acaba Sütun veya Satırlarda Değişiklik Yapmam Gerekmekte mi?
 
Merhaba,
İlk mesajınızdan dosya yapınızı anlayamadım.
Verilerinizin B2'den başlayarak aşağıya doğru, toplamların da A2'de başlayarak aşağıya doğru yazıldığını varsaydım.
Kod:
Sub Test()
    myTime = Timer
    Range("A:A").ClearContents
    sat = 2
For X = 2 To Cells(Rows.Count, "B").End(3).Row
    Tpl = 0
    Veri = Split(Cells(X, "B"), "+")
        For Y = 0 To UBound(Veri)
            n = InStr(Veri(Y), "da)")
            k = InStr(Veri(Y), "(") + 1
            uz = n - k
            Tpl = Tpl + Mid(Veri(Y), k, uz)
        Next Y
    Cells(sat, "A") = Tpl
    sat = sat + 1
Next X
MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & _
               "İşlem süresi ; " & Format(Timer - myTime, "0.000") & " Saniye", vbInformation, "BİLGİ"
End Sub
 
Altenatif;

KTF;

=K_TOPLA(A1)

C++:
Option Explicit

Function K_TOPLA(Rng As Range)
    Dim My_Numbers As Object, My_Number As Object
    
    Application.Volatile True
    
    With VBA.CreateObject("VBScript.RegExp")
        .Pattern = "(\([0-9,]+\)*)"
        .Global = True
    
        Set My_Numbers = .Execute(Rng.Value)
        For Each My_Number In My_Numbers
            K_TOPLA = K_TOPLA + CDbl(Replace(My_Number, "(", ""))
        Next
    End With
End Function
 
Geri
Üst