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.
 
Katılım
20 Haziran 2015
Mesajlar
36
Excel Vers. ve Dili
office 2010 türkçe
Altın Üyelik Bitiş Tarihi
21/08/2022
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
 
Katılım
28 Şubat 2017
Mesajlar
4
Excel Vers. ve Dili
2013
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?
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 
Üst